Introduction
在先前Without VM的Installer文章中,提及可以使用search for vm與download from URL兩種方式獲取JVM功能。本篇文章目的為解決區分JVM版本的問題,而我的目的是希望能夠區分出openjdk與non-openjdk。
How to?
Project > JVM Settings > Installer Settings
第一種方法可以讓你區別:
- Vendor: SUN、IBM、APPLE、HP。
- VM type: ALL、JRE、JDK。
- VM Version: 如1.7或1.8以上。
舉例來說:
格式必須為{vendor}_{type}_version。然而,由於openjdk的vendor也是oracle,所以這個方法沒辦法解決我的問題。
Note. VM type部分我實測也無法區分,但不是我要追的重點,所以略過它。
Build > JVM Search Settings
第二種可以根據JVM的屬性做搜尋,先看我選擇後的樣子:
在我的IA2015版本中,預設只有支援到1.7,而這個設定檔都位於IA_HOME/resource/jvms下。以我要新增linux下Oracle JDK 1.8為例,首先我將1.7的jdk複製為oraclejdk18.jvm與oracle_open_jdk18.jvm:(新增或刪除spec檔案後記得重新啟動IDE)
屬性的部分包含:
JVM_PROPERTIES
Standard與Open版本的JDK差別在於java.vm.name:
Standard:
JVM_PROPERTIES: java.vendor=Oracle... java.version=1.8... java.vm.name=Java HotSpot...
OpenJDK:
JVM_PROPERTIES: java.vendor=Oracle... java.version=1.8... java.vm.name=OpenJDK...
Note. Oracle是在JDK7後將vendor從SUN改為Oracle。
PATH_HINT
由於我是從jdk7複製過來,所以我把7改成8就搞定了。
Summary
除了區分standard與open以外,還有幾點要考量:
- 是否允許使用1.8+以上版本,例如java 9?
- 假設預設位置找不到,使用者如何指定自己的位置?
針對這兩個問題,目前我只有透過Installer Settings所找到的jvm去啟動installer後,再由pre-install中的action去做檢查。
留言
張貼留言