2009-08-26 137 views
4

我在Windows中生成了.jar文件。
我必須在unix中執行該.jar文件。如何在unix上運行.jar文件?

我正在運行的命令(java -jar myJar.jar),但它給

java.lang.UnsupportedVersionError 

我在UNIX上使用Java版本1.5.0.12。

+0

感謝您隨後更改問題。 – Bombe 2009-08-26 13:17:03

回答

5
java.lang.UnsupportedVersionError 

您必須嘗試使用​​本地java1.5啓動使用JDK6編譯的jar。

您可以:

  • 您在Unix JVM升級到1.6
  • 或用

重新編譯類:

javac -source 1.5 -target 1.5 -bootclasspath /path/to/jre1.5/lib/rt.jar 

,檢查是否可以生成1.5個字節碼兼容。

21

與Windows下相同。

java -jar file.jar 
0
  • 檢查是否已安裝JDK或JRE。如果不是,請安裝。
  • 設置JAVA_HOME =#JDK/JRE home目錄
  • $ JAVA_HOME /斌/ Java的罐子file.jar

你也應該記住,JVM不向前兼容的,所以如果你使用JDK 1.6製作了一個jar文件,它不能與JDK 1.5一起使用!

在這種情況下,您可以:

  • 安裝JDK 1.6的Unix

  • -target 1.5標誌重新編譯的jar(但你可能得到任何形式的因API不兼容的錯誤,所以第一種方式要好得多)

+1

你忘記'-source和-bootclasspath'參數(請參閱下面的答案) – VonC 2009-08-26 11:24:16

1

您是否嘗試過在您的Unix系統上使用較新版本的Java?

如果你控制jar文件,你可以在編譯時定位到Java 1.5嗎?

0

UnsupportedVersionError意味着您已經編譯了Java源代碼並使用了較新版本的Java,而不是您試圖運行的Java源代碼。 Java向下兼容(較新版本的Java可以運行用舊版本編譯的Java程序),但不向上兼容(舊版本的Java無法運行使用較新版本編譯的Java程序)。

你說你在Unix上使用Java 5。您是否在Windows上使用Java 6進行編譯?那顯然不會起作用。

可能的解決方案:

  • 在Windows上編譯(最安全的選擇)
  • 使用編譯器標誌使用Java 5的源代碼:-source 1.5 -target 1.5,而你編譯(這不會保護你免受使用Java 6-從標準庫只有類,所以這不是你的程序將沒有錯誤在Java 5中運行一個完整的擔保)
  • 升級到Java 6在Unix
+0

你忘了'-bootclasspath'(我剛剛在我的答案中加入了該選項;)) – VonC 2009-08-26 10:51:52

0

[R在Windows機器上使用Java 5編譯應用程序。

(Java 6中默認使用新的設備生成Java 6兼容的字節碼。最簡單的你是安裝Java JDK 5,用它來重新編譯應用程序)