【问题标题】:What is the reason for UnsupportedClassVersionError?UnsupportedClassVersionError 的原因是什么?
【发布时间】:2011-08-29 07:05:33
【问题描述】:
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:676)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:317)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.install4j.runtime.MacLauncher.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at apple.launcher.LaunchRunner.run(LaunchRunner.java:115)
at apple.launcher.LaunchRunner.callMain(LaunchRunner.java:50)
at apple.launcher.JavaApplicationLauncher.launch(JavaApplicationLauncher.java:52)

我一点也不明白;谁能简单解释一下?谢谢

【问题讨论】:

标签: java


【解决方案1】:

当您使用较新版本的 JDK 编译代码并尝试在较旧版本的 JVM 上运行它时,可能会发生此错误。这是您正在编译的您自己的代码吗?您使用的是 IDE(如 Eclipse)吗?尝试更新您的JRE。

【讨论】:

  • 使用 java -version 和 javac -version 比较你的编译器版本和 JVM 版本。
  • @Kevin 这其实是很多初学者在开始学习Java时都会犯的一个错误。既然我们都去过一次,我们应该容忍初学者犯的错误。
  • 我将如何更新我的 JRE?
  • 我不用mac所以帮不了你。但是您可能想去 superuser.com 或 apple.stackexchange.com 并在那里询问如何升级您的 JVM。
  • @Peter - 执行 Vincent 的建议并在命令提示符中输入 java -version(假设您的 Java 环境变量已安装)。它会告诉你你有什么版本。您可以在我的答案中的链接中下载最新版本。
【解决方案2】:

这意味着您的编译器生成的 Java 版本比您尝试运行它的 JVM 更高。

例如为 java 6 编译并使用 java 5 运行。

解决方案 1:升级 jvm(输入 java -version 看看你有什么)

解决方案 2:以较低版本为目标(例如在 eclipse java 编译器设置中)

【讨论】:

    【解决方案3】:

    JAVA_HOME 应该使用比你编译时使用的更年轻的 java 版本来定义。

    【讨论】:

      【解决方案4】:

      这是说您正在为不同版本的 java 运行时使用类文件。您正在安装什么程序(我在您的堆栈跟踪中注意到 installj)?

      尝试升级您的 Java 运行时。

      【讨论】:

      • 我正在尝试为我的 orgo 实验室安装一个名为 marvin sketch 的程序,我想我必须更改我的 java,所以我这样做了,但现在我不知道如何修复它
      • 你改变你的java是什么意思?在运行安装程序之前你对你的 java 做了什么吗?
      • 是的,我去了oracle.com/technetwork/java/javase/downloads/index.html 并下载了其中一个程序,但我不知道哪个程序让我很困惑:(
      【解决方案5】:

      我在安装JRE 1.8 并尝试在Eclipse Kepler 上运行GAE application 的Hello World 时遇到此错误。这是解决方案:

      我从Eclipse Marketplace 安装了Java 8 support for Kepler。然后我通过转到Eclipse -> 右键单击​​项目文件-> Properties -> Java Build Path 解决了我的问题,我删除了JRE System Library 1.6,单击了Add Library -> JRE System Library -> Installed JRE's。然后我点击Search,它自动找到版本1.8,然后我返回之前的视图,选择1.8,现在一切正常!

      【讨论】:

        猜你喜欢
        • 2017-04-10
        • 2016-08-28
        • 2016-09-01
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 2016-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多