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

发布于 2024-12-28 23:02:50 字数 886 浏览 1 评论 0原文

我试图在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

聚集的泪 2025-01-04 23:02:50

尝试执行以下操作 -

第一步:

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 或更高版本,则您必须执行以下步骤。如果没有得到上述输出,则必须卸载并重新安装 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
    导出 PATH=$JAVA_HOME/bin:$PATH
    导出 CLASSPATH=$CLASSPATH:$JAVA_HOME/lib

Try doing the following -

First Step:

sudo update-java-alternatives -l

This to ensure you have JDK6 installed correctly. It should display something like this -

java-6-sun 63 /usr/lib/jvm/java-6-sun

Second Step:

sudo update-java-alternatives -s java-6-sun

This way both javac and java v6 will be used by default.

Update:

Type the following on your terminal -

javac -version

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

  1. Create symlink-

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

  2. Once that is done, add the following to your .bashrc file

    export JAVA_HOME=/usr/local/jdk1.6.0_10
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib

神仙妹妹 2025-01-04 23:02:50

您必须使用比运行 jar 的版本更新的 JDK/JRE 版本进行编译。检查用于在 Netbeans 中编译项目的 JDK 版本,然后使用以下命令在控制台中检查 JDK/JRE 版本

java -version

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 -version
半山落雨半山空 2025-01-04 23:02:50

错误是:“无法识别的类文件版本”。这意味着您尝试启动由不兼容的 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

沦落红尘 2025-01-04 23:02:50

在您自己的计算机和您尝试部署的实际计算机中运行以下命令:

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.

还如梦归 2025-01-04 23:02:50

如果您的 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 的位置。

You get this error if your versions of javac and java are not the same.

Exception in thread "main" java.lang.ClassFormatError: Runner
(unrecognized class file version)

Diagnose the problem this way:

$ which java
/usr/bin/java

$ which javac
/home2/ericlesc/bin/jdk1.8.0_40/bin/javac

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

export JAVA_HOME=/home2/ericlesc/bin/jdk1.8.0_40
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib

Then the error goes away.

You will need yours to point to where you installed java.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文