Thứ Năm, 21 tháng 3, 2019

Nâng cấp lên Java 8 trong Ubuntu 14.04

Trong bài ta sẽ nâng cấp từ Java 1.7 lên Java 1.8 trong Ubuntu 14.04 và cài đặt, cập nhật cấu hình cho Eclipse và Glassfish cũng như cập nhật các tập tin pom.xml để Maven dùng Java 8 biên dịch mã.


A. Nâng cấp từ Java 1.7 lên Java 1.8 trong Ubuntu 14.04

1. Thêm PPA (Personal Package Archive) cho gói Oracle Java 1.8, là gói chính thức của Oracle :

$ sudo add-apt-repository ppa:webupd8team/java

(Nếu không, ta có thể xài gói openjdk như sau :
$ sudo add-apt-repository ppa:openjdk-r/ppa
)

Nếu gặp lỗi :
sudo: add-apt-repository: command not found

thì cài đặt software-properties-common như sau :

$ sudo apt-get install -y software-properties-common


2. Cập nhật thông tin gói trên máy (local package cache) :

$ sudo aptitude update


3. Liệt kê tất cả các phiên bản JDK, JRE, BIN có sẵn :

$ sudo aptitude show oracle-java8-jdk
$ sudo aptitude show oracle-java8-jre
$ sudo aptitude show oracle-java8-bin 


4. Cài đặt Java 8.181-1 :

$ sudo aptitude install oracle-java8-jdk=8.181-1~trusty1 oracle-java8-jre=8.181-1~trusty1 oracle-java8-bin=8.181-1~trusty1


* Ta có thể dùng lệnh apt-get thay vì dùng lệnh aptitude cho các bước 2,3,4 như sau :

$ sudo apt-get update
$ sudo apt-get install oracle-java8-jdk oracle-java8-jre oracle-java8-bin


5. Lưu phiên bản Java mới vừa cài đặt và chuyển sang dùng phiên bản này :

$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-7-oracle/jre/bin/java          73        manual mode
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java          83        manual mode

Press enter to keep the current choice[*], or type selection number: 3 
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/java to provide /usr/bin/java (java) in manual mode

Ta chọn số 3 tương ứng với Java 8 vừa cài đặt

6. Tương tự như trên, chọn trình biên dịch javac vừa cài đặt với lệnh sau, rồi chọn phiên bản vừa cài đặt :
xxx/usr/lib/jvm$ sudo update-alternatives --config javac

7. Kiểm tra phiên bản Java được dùng trong Ubuntu :

$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b25, mixed mode)

$ javac -version
javac 1.8.0_181

B. Cập nhật các tập tin pom.xml để Maven dùng java 8 cho biên dịch và chạy mã

1. Tìm các tập tin còn sử dụng java 1.7:

$ grep -r --exclude-dir=.svn "<source>1\.7" *
$ grep -r --exclude-dir=.svn "<target>1\.7" * 

2. Thay phiên bản 1.7 bằng 1.8 trong các tập tin pom.xml vừa tìm được :

$ find . -name pom.xml -exec sed -i "s/<source>1\.7/<source>1\.8/g" {} \;
$ find . -name pom.xml -exec sed -i "s/<target>1\.7/<target>1\.8/g" {} \; 

3. Cập nhật cấu hình và biên dịch mã trong dự án để kiểm tra việc biên dịch này chạy không lỗi :

$ mvn eclipse:eclipse
$ mvn clean install -DskipTests


C. Cài đặt và cấu hình dùng Java 8 cho Eclipse

Tôi dùng Eclipse phiên bản Kepler nên cần phải cài một bản vá hỗ trợ cho việc dùng Java 8 cho phiên bản này. Nếu bạn dùng phiên bản Eclipse gần nhất thì Java 8 được hỗ trợ sẵn và không cần phải cài bản vá này.

Tải bản vá Java 8 java8patch-P20140317-1600-repository.zip ở đường dẫn sau :
https://archive.eclipse.org/eclipse/downloads/drops4/P20140317-1600/

Help > Install New Software... > Add, nhấn Archive để chọn tập tin zip vừa tải về

Rồi chọn cài đặt 'Eclipse Java Development Tools'

Sau khi cài đặt xong, cấu hình Eclipse như sau :

Window->Preferences->Java->Installed JREs-> thêm jdk 1.8 và chọn hướng đến thư mục này /usr/lib/jvm/java-8-oracle-1.8.0.181
Sau đó chọn JRE 1.8 vừa thêm vào
       
Window->Preferences->Java->Compiler-> chọn java 1.8

Cuối cùng chấp nhận để Eclipse biên dịch lại toàn bộ mã trong Workspace để thích ứng với phiên bản java 8 vừa chọn sử dụng


D. Cấu hình Glassfish 3.1.2.2 để dùng Java 8

Tôi dùng Glassfish 3.1.2.2 nên cần phải cấu hình như sau :
Cập nhật phiên bản JRE cho Glassfish :

- Trong tập tin glassfishv3.1.2.2/glassfish/config/asenv.conf -> thêm hoặc thay đổi như sau :
AS_JAVA="/usr/lib/jvm/java-8-oracle-1.8.0.181"

- Trong tập tin glassfishv3.1.2.2/glassfish/config/osgi.properties -> thêm vào cuối tập tin:
jre-1.8=${jre-1.7}

Cuối cùng kiểm tra phiên bản Glassfish và phiên bản Java nó sử dụng :

$ asadmin version -v
Version = GlassFish Server Open Source Edition 3.1.2.2 (build 5), JRE version 1.8.0_181
Command version executed successfully.