Java jar 文件未在 Linux 终端中运行
我试图在 Linux 上的终端中运行 .jar
文件,但出现错误:
[root@localhost dist]# java -jar helloworld.jar
Exception in thread "main" java.lang.ClassFormatError:
helloworld.Helloworld (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).
我已检查我的版本,结果是:
[root@localhost /]# java --version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-51)
是什么导致了此错误以及如何修复它?
I am trying to run a .jar
file in terminal on Linux but gives an error:
[root@localhost dist]# java -jar helloworld.jar
Exception in thread "main" java.lang.ClassFormatError:
helloworld.Helloworld (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).
I have checked my version and it is:
[root@localhost /]# java --version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-51)
What is causing this error and how do I fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
尝试执行以下操作 -
第一步:
这可以确保您已正确安装 JDK6。它应该显示类似这样的内容 -
第二步:
这样默认情况下将使用 javac 和 java v6。
更新:
在终端上键入以下内容 -
如果输出为
javac 1.6.0_10 或更高版本
,则您必须执行以下步骤。如果没有得到上述输出,则必须卸载并重新安装 java。如果显示的版本是 1.6.0_10 或更高版本,则需要执行的步骤
创建符号链接-
ln -s /usr/local/java /usr/local/jdk1.6.0_10
一次完成后,将以下内容添加到您的
.bashrc
文件导出JAVA_HOME=/usr/local/jdk1.6.0_10
导出 PATH=$JAVA_HOME/bin:$PATH
导出 CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
Try doing the following -
First Step:
This to ensure you have JDK6 installed correctly. It should display something like this -
Second Step:
This way both javac and java v6 will be used by default.
Update:
Type the following on your terminal -
If you get
javac 1.6.0_10 or later
as the output then you will have to do the following steps. If you dont get the above output, you will have to un-install and re-install java.Steps to do if version shown is 1.6.0_10 or later
Create symlink-
ln -s /usr/local/java /usr/local/jdk1.6.0_10
Once that is done, add the following to your
.bashrc
fileexport JAVA_HOME=/usr/local/jdk1.6.0_10
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
您必须使用比运行 jar 的版本更新的 JDK/JRE 版本进行编译。检查用于在 Netbeans 中编译项目的 JDK 版本,然后使用以下命令在控制台中检查 JDK/JRE 版本
You must have compiled with a newer version of the JDK/JRE than the one you're running the jar with. Check the version of the JDK you're using to compile the project in Netbeans, and then check the JDK/JRE version in the console using
错误是:“无法识别的类文件版本”。这意味着您尝试启动由不兼容的 java 版本构建的 jar。
正如我所看到的,您实际上运行了 gcc java。尝试用原来的sun/oracle jre启动这个jar
The error is : "unrecognized class file version" . It means you trying to start jar that was build by incompatible java version.
As I can see, you actually run gcc java. Try to start this jar by original sun/oracle jre
在您自己的计算机和您尝试部署的实际计算机中运行以下命令:
java -version
如果不同,那么您应该会遇到问题。
注意:如果运行上述命令时出现找不到命令错误,则路径变量可能未正确设置。在这种情况下,请进入jdk/sdk安装目录,bin文件夹,然后运行命令。
Run the following in your own machine and the actual machine your are trying to deploy:
java -version
If it is different, then you should get the issue.
Note: If you get cannot find command error while running above command, the path variable may not be set correctly. In this case, please go to the dir where jdk/sdk is installed, to bin folder and then run the command.
如果您的 javac 和 java 版本不同,则会出现此错误。
按以下方式诊断问题:
请注意 javac 和 java 不是来自同一目录?这两个需要来自同一个地方,同一个版本。
为了修复它,我将这些添加到我的 .bash_profile
然后错误消失了。
您将需要您的指向您安装 java 的位置。
You get this error if your versions of javac and java are not the same.
Diagnose the problem this way:
Notice how the javac and the java are not from the same directories? Those two need to be from the same place, the same version.
To fix it, I added these to my .bash_profile
Then the error goes away.
You will need yours to point to where you installed java.