切換 Sun JDK 為 openJDK

OpenJDK和Sun的JDK Linux版是不同的。前者為開源軟體,後者則為商業軟體。

 

Q: How to download and install prebuilt OpenJDK packages

A: 先下載好特定平台的壓縮檔,再解開來就可以直接使用:

OpenJDK 下載網址:
http://jdk.java.net/9/

解壓縮用指令:

$ tar xvf openjdk-9.*_bin.tar.gz

Max是用 maxOS 開發,所以是在 /Library/Java/JavaVirtualMachines 這個目錄下執行指令:

sudo tar xvf ~/Downloads/openjdk-9.0.4_osx-x64_bin.tar.gz

Q: How to remove Java 8 JDK from Mac

A:

Run this command to just remove the JDK

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk<version>.jdk

Run these commands if you want to remove plugins

sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist
sudo rm -rf /Library/PrivilegedHelperTools/com.oracle.java.JavaUpdateHelper
sudo rm -rf /Library/LaunchDaemons/com.oracle.java.Helper-Tool.plist
sudo rm -rf /Library/Preferences/com.oracle.java.Helper-Tool.plist

移掉 Sun JDK 之後,再去 run tomcat 就會顯示錯誤訊息:

The archive: /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/lib/tools.jar which is referenced by the classpath, does not exist.

解法,要刪掉舊的 TimCat Server 重新增加 Web Server, 並指定 JRE 為 openJDK 的版本即可。

附註:如果有修改 server.xml, web.xml, catelina.policy 等檔案,記得要先備份。


接著 build 會出問題:

javax.activation classes throws NoClassDefFoundError
https://bugs.openjdk.java.net/browse/JDK-8187748?jql=project%20in%20(JDK)%20AND%20component%20in%20(core-libs)%20AND%20Subcomponent%20in%20(javax.activation)

原來不只我才遇到,結論:

千萬不要用「太新」的版本!stable 最重要!

遇到這個問題 2個解法,1是加參數去 build, 我選擇方法 2降版為 JDK 8 版,改用 openJDK 8 的下載網址:
http://jdk.java.net/8/

附註:macOS 下載 .dmg 檔案,點 2下就安裝好了。

JDK 8

Debian, Ubuntu, etc.

On the command line, type:

$ sudo apt-get install openjdk-8-jdk

很多情況不會在 server 上開發,所以安裝 jre 即可

$ sudo apt-get install openjdk-8-jre

 

Fedora, Oracle Linux, CentOS, Red Hat Enterprise Linux, etc.

On the command line, type:

$ sudo yum install java-1.8.0-openjdk

安裝完後, jre 目錄會在:

/usr/lib/jvm/jre/bin/ 之下

如果需要設定或存取,可以在這folder 下拿到 binary.

 

 

相關文章

寫留言

你的電子郵件位址並不會被公開。 必要欄位標記為 *