.jar 在 Windows 中有效,但在 Linux 中无效(堆栈跟踪)
这就是我得到的结果:
[user@localhost 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)
[user@localhost KioskMenu]$
我唯一注意到的是我的 RHEL 使用的是“免费”版本的 Java。但这应该不重要吧?
This is what I get:
[user@localhost 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)
[user@localhost KioskMenu]$
The only thing I noticed was that my RHEL is using a "free" version of Java. But this shouldn't matter should it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您使用比 Linux 计算机上的 Java 版本更新的 Java 版本编译了该 jar。
You compiled the jar with a newer version of Java than the one on your Linux machine.
您确实应该这样做:
java -jar ./kioskmenu.jar
注意
-
。如果您只提供
java jar ./kioskmenu.jar
,JVM 会尝试查找名为jar
的类,并尝试传递./kioskmenu.jar
code> 作为它的参数 - 这显然不是你想要的。You should really be doing this:
java -jar ./kioskmenu.jar
Notice the
-
.If you just give
java jar ./kioskmenu.jar
, the JVM is trying to find a class namedjar
and trying to pass./kioskmenu.jar
as an argument to it - which is clearly not what you want.