نصب جاوا در اوبونتو از مخزن رسمی با APT انجام میشود، اما بستهٔ مناسب به نیاز برنامه بستگی دارد. JRE برای اجرا و JDK برای توسعه و کامپایل است. شمارهٔ پیشفرض بستهها در همهٔ نسخههای اوبونتو یکسان نیست؛ Java 11 را پیشفرض ثابت امروز فرض نکنید.
پیش از نصب جاوا در اوبونتو
cat /etc/os-release
java -version
javac -version
نبود javac در کنار java ممکن است به معنی نصب بودن فقط محیط اجرا باشد. نسخهٔ لازم را از مستند برنامه، ابزار ساخت و کتابخانههای آن مشخص کنید. این مقاله از آموزش قدیمی اوبونتو ۲۰٫۰۴ به راهنمای عمومی بستههای سازگار بهروزرسانی شده است؛ برای سرور جدید از انتشار دارای پشتیبانی استفاده کنید.
نصب JDK پیشفرض توزیع
sudo apt update
apt-cache policy default-jdk
sudo apt install default-jdk
java -version
javac -version
راهنمای رسمی جاوا در اوبونتو این بسته را برای JDK پیشفرض همان انتشار معرفی میکند. پیش از تأیید نصب، بستهها و نسخهٔ پیشنهادی را بررسی کنید. اگر فقط اجرای برنامه لازم است، default-jre یا بستهٔ runtime موردنیاز برنامه را بررسی کنید؛ نصب هر دو بهصورت جداگانه برای همهٔ کاربردها الزامی نیست.
وقتی برنامه نسخهٔ مشخصی میخواهد
برای نمونه، اگر برنامه Java 21 میخواهد و مخزن انتشار شما آن را ارائه میدهد:
apt-cache policy openjdk-21-jdk
sudo apt install openjdk-21-jdk
اگر Candidate وجود ندارد، مخزن نسخهٔ دیگری از اوبونتو را به سیستم اضافه نکنید. روش نصب باید با همان انتشار و معماری سازگار باشد. جدیدتر بودن یک JDK به معنی سازگاری قطعی همهٔ برنامههای قدیمی با آن نیست.
انتخاب java و javac
اگر چند نسخه نصب است و تغییر پیشفرض سیستم لازم دارید، ابتدا اثر آن بر سرویسهای دیگر را بررسی کنید:
sudo update-alternatives --config java
sudo update-alternatives --config javac
java -version
javac -version
update-alternatives فرمانهای پیشفرض را از طریق پیوندها انتخاب میکند. وجود javac و java از دو نسخهٔ نامتناسب میتواند خطای ساخت یا اجرا ایجاد کند. برای تنها یک برنامه، تعیین مسیر JDK در تنظیم همان برنامه ممکن است مناسبتر از تغییر سراسری باشد.
تنظیم درست JAVA_HOME
این متغیر باید به ریشهٔ نصب JDK اشاره کند، نه فایل java یا پوشهٔ bin. برای JDK انتخابشده، مسیر کامپایلر را ببینید:
readlink -f "$(command -v javac)"
دو بخش پایانی bin/javac را از مسیر واقعی بردارید. نمونهٔ زیر فقط وقتی درست است که همین مسیر روی سیستم شما وجود داشته باشد:
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
"$JAVA_HOME/bin/java" -version
"$JAVA_HOME/bin/javac" -version
این export بر نشست فعلی اثر دارد. در معماری ARM یا نسخهٔ دیگر، مسیر فرق میکند. برای سرویس systemd، متغیر باید در تنظیم خود سرویس قرار گیرد؛ تغییر .bashrc کاربر الزاماً به سرویس منتقل نمیشود. در /etc/environment نیز دستور export یا جایگزینی فرمان Bash ننویسید.
آزمون کامپایل و اجرا
در پوشهٔ آزمایشی، فایل Hello.java را با این محتوا بسازید:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Hostnegar!");
}
}
javac Hello.java
java Hello
نام فایل و کلاس باید هماهنگ باشد. خطای UnsupportedClassVersionError معمولاً از جدیدتر بودن نسخهٔ کامپایل نسبت به محیط اجرا خبر میدهد. پس از هماهنگی نسخهها، خود برنامهٔ اصلی و گزارش سرویس را نیز بررسی کنید؛ نمایش نسخه بهتنهایی تأیید کارکرد برنامه نیست.
مطالعهٔ مرتبط
بازبینی فنی: ۱۳ آبان ۱۴۰۵. تاریخ انتشار اولیه و نشانی قبلی حفظ شدهاند.