2011-08-15 31 views
3

這就是我得到:在Windows,但不是Linux(堆棧跟蹤)的.jar工作

[[email protected] KioskMenu]$ java -jar ./kioskmenu.jar 
Exception in thread "main" java.lang.ClassFormatError: KioskMenu (unrecognized class file version) 
    at java.lang.VMClassLoader.defineClass(libgcj.so.7rh) 
    at java.lang.ClassLoader.defineClass(libgcj.so.7rh) 
    at java.security.SecureClassLoader.defineClass(libgcj.so.7rh) 
    at java.net.URLClassLoader.findClass(libgcj.so.7rh) 
    at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh) 
    at java.lang.ClassLoader.loadClass(libgcj.so.7rh) 
    at java.lang.ClassLoader.loadClass(libgcj.so.7rh) 
    at gnu.java.lang.MainThread.run(libgcj.so.7rh) 
[[email protected] KioskMenu]$ 

我發現的唯一的事情是,我的RHEL是使用Java的「免費」版本。但這應該不重要嗎?

+0

我粘貼了錯誤的代碼塊。我編輯了我的問題。 – n0pe

+2

你使用了哪個Java編譯器,包括版本號?另外,你可以包含'java -version'的輸出嗎? –

+0

命令'jar -tvf kioskmenu.jar'列出正確的類嗎?你是如何得到linux上的jar文件的? (如果是ftp,你是否指定了二進制傳輸模式?) – rsp

回答

5

您使用比Linux機器上的更新版本的Java編譯jar。

+0

你是對的,我編譯1.6,並試圖與1.4運行。將在4分鐘內接受。 – n0pe

1

你確實應該這樣做:

java -jar ./kioskmenu.jar

通知的-

如果你只是給java jar ./kioskmenu.jar,在JVM試圖找到一個名爲jar類,並試圖通過./kioskmenu.jar作爲參數傳遞給它 - 這顯然不是你想要的。

+0

我的錯誤是我粘貼了錯誤的代碼塊。新塊被編輯在 – n0pe