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.
無意間看到,網頁標題下紅色選單内的”Pyhton”拼錯了,請參考。
哇,感謝回覆!好神奇,錯了這麼多年都沒發現。@_@;