2015-07-10 87 views
1

要執行的jar命令> Java的罐子JAR文件,name.jar執行從命令提示符下運行的JAR有完整的Java路徑

它工作正常,如果JAVA_HOME版本使用該jar文件是與JDK版本匹配建立。否則,它會給出以下錯誤。

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:626) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:56) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:195) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:247) 
     at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56) 

我有一個第三方jar建在JDK 1.8上,我沒有任何控制來改變JDK verison和重建。

我有一臺unix機器,其中JAVA_HOME設置爲JDK 1.5。和我的應用程序在同一臺機器上部署的其他應用程序之一。所以我不能將JAVA_HOME更改爲指向JDK 1.8,這可能會破壞其他應用程序。

我知道JDK 1.8安裝在系統中的路徑。

有沒有辦法引用JDK完整路徑(未設置爲JAVA_HOME)並執行該jar。

任何幫助將不勝感激。

回答

2

所以據我瞭解,你的系統上有2個不同的Java版本,1.5版本用作你的默認java。但對於你的新罐子,你需要1.8才能開始?

你應該使用絕對路徑到你的Java 1.8,以啓動它,像這樣:

的/ opt/JAVA/1_8 /斌/ Java的罐子JAR文件,name.jar

+0

謝謝..它的工作。 – Suvasis

+0

這適用於Windows。但不在Unix機器上。 – Suvasis

+0

當您執行「/ opt/java/1_8/bin/java -version」時會發生什麼? – tagtraeumer

3
/path/to/jdk/bin/java -jar jar-file-name.jar 
+0

謝謝..它的工作。 – Suvasis

+0

這適用於Windows。但不在Unix機器上。 – Suvasis

+0

爲什麼你不能將它重新編譯爲1.5?使用javac -source 1.5 -target 1.5檢查-bootclasspath /path/to/jre1.5/lib/rt.jar – 12dollar

相關問題