我试图在Linuxterminal上运行一个.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)
什么是造成这个错误,我该如何解决它?
尝试做下面的事情 –
sudo update-java-alternatives -l
这确保您已经正确安装了JDK6。 它应该显示这样的东西 –
java-6-sun 63 /usr/lib/jvm/java-6-sun
sudo update-java-alternatives -s java-6-sun
这样,默认情况下将使用javac和java v6。
在终端上键入以下内容 –
javac -version
如果您将javac 1.6.0_10 or later
作为输出,那么您将不得不执行以下步骤。 如果你没有得到上面的输出,你将不得不卸载并重新安装Java。
创建符号链接 –
ln -s / usr / local / java /usr/local/jdk1.6.0_10
完成之后,将以下内容添加到.bashrc
文件中
export JAVA_HOME = / usr / local / jdk1.6.0_10 export PATH = $ JAVA_HOME / bin:$ PATH export CLASSPATH = $ CLASSPATH:$ JAVA_HOME / lib
您必须使用新版本的JDK / JRE进行编译,而不是使用该版本的JAR。 检查用于在Netbeans中编译项目的JDK版本,然后在控制台中检查JDK / JRE版本
java -version
错误是:“无法识别的类文件版本”。 这意味着你试图启动由不兼容的Java版本构建的jar。
正如我所看到的,你实际上运行gcc java。 尝试通过原始的sun / oracle jre启动这个jar
在你自己的机器和你想要部署的实际机器上运行以下代码:
java -version
如果不一样,那么你应该得到这个问题。
注意:如果在运行上述命令时得不到命令错误,则路径变量可能无法正确设置。 在这种情况下,请将安装jdk / sdk的目录转到bin文件夹,然后运行该命令。
如果你的javac和java版本不一样,你会得到这个错误。
Exception in thread "main" java.lang.ClassFormatError: Runner (unrecognized class file version)
这样诊断问题:
$ which java /usr/bin/java $ which javac /home2/ericlesc/bin/jdk1.8.0_40/bin/javac
注意javac和java不是来自同一个目录吗? 这两个需要来自同一个地方,相同的版本。
为了解决这个问题,我把这些添加到我的.bash_profile中
export JAVA_HOME=/home2/ericlesc/bin/jdk1.8.0_40 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
然后错误消失。
你将需要你的指向你安装Java的地方。