Java jar文件未在Linux终端中运行

时间:2012-01-26 07:23:31

标签: java linux jar netbeans-7

我正在尝试在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)

导致此错误的原因是什么?如何解决?

5 个答案:

答案 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。

如果显示的版本是1.6.0_10或更高版本

,则要执行的步骤
  1. 创建符号链接 -

    ln -s / usr / local / java /usr/local/jdk1.6.0_10

  2. 完成后,将以下内容添加到.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的位置。