我正在尝试在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)
导致此错误的原因是什么?如何解决?
答案 0 :(得分:4)
尝试执行以下操作 -
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
文件
导出JAVA_HOME = / usr / local / jdk1.6.0_10 export PATH = $ JAVA_HOME / bin:$ PATH export CLASSPATH = $ CLASSPATH:$ JAVA_HOME / lib
答案 1 :(得分:0)
您必须使用较新版本的JDK / JRE编译,而不是运行jar的版本。检查您用于在Netbeans中编译项目的JDK版本,然后使用
检查控制台中的JDK / JRE版本java -version
答案 2 :(得分:0)
错误是:“无法识别的类文件版本”。这意味着您尝试启动由不兼容的Java版本构建的jar。
正如我所看到的,你实际上是在运行gcc java。尝试通过原始的太阳/ oracle jre启动这个罐子
答案 3 :(得分:0)
在您自己的计算机和您尝试部署的实际计算机上运行以下命令:
java -version
如果不同,那么你应该得到问题。
注意:如果在运行上述命令时遇到无法找到命令错误,则可能无法正确设置路径变量。在这种情况下,请转到安装了jdk / sdk的目录,到bin文件夹然后运行命令。
答案 4 :(得分:0)
如果您的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的位置。