java.lang.UnsupportedClassVersionError:.class文件中的版本号错误?

时间:2010-03-18 00:16:31

标签: java version

当我包含一个我必须从源代码编译的开源库时,我收到此错误。现在,网上的所有建议都表明代码是在一个版本中编译的,并在另一个版本中执行(旧的新版本)。但是,我的系统上只有一个版本的JRE。如果我运行命令:

$ javac -version
javac 1.5.0_18

$ java -version
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)

并在Eclipse中检查java库的属性,得到1.5.0_18

因此,我必须得出其他内容,类本身内部,抛出异常?这甚至可能吗?

10 个答案:

答案 0 :(得分:184)

我已经了解到这样的错误消息通常是正确的。当它不可能(在你的脑海中)被报告的错误说出来时,你会去寻找另一个地区的问题...只是在几小时之后发现原始的错误信息确实是正确的。

由于您正在使用Eclipse,我认为Thilo是正确的。您收到此消息的最可能原因是因为您的一个项目正在编译1.6类。如果你在系统上只有1.5 JRE就没关系,因为Eclipse有自己的编译器(不是javac),只需要1.5 JRE来编译1.6类。 这可能很奇怪,需要取消选中设置以允许这样做,但我设法做到了。

对于相关项目,请检查项目属性(通常为Alt + Enter),Java Compiler部分。这是一个配置为编译1.6的项目的图像,但只有1.5 JRE。

enter image description here

答案 1 :(得分:9)

您是否尝试过完全“干净”然后在Eclipse中重建(Project-> Clean ...)?

您是否可以直接从命令行使用“javac”和“java”进行编译和运行?这是否正常?

如果右键单击项目,请转到“属性”,然后转到“Java构建路径”,任何选项卡下是否有可疑条目?这基本上就是你的CLASSPATH。

在Eclipse首选项中,您可能还需要仔细检查“Java”部分中的“已安装的JRE”部分,并确保它符合您的预期。

你肯定有一个过时的.class文件,或者你正在使用的Java版本中的编译时/运行时不匹配。

答案 2 :(得分:5)

你用Eclipse编译了吗?它使用不同的编译器(不是javac)。这不应该导致此错误(如果一切配置正确),但您可以尝试使用javac编译它。

如果解决了这个问题,请尝试查看Eclipse是否有一些不正确的编译器设置。特别是它以Java 5为目标。

答案 3 :(得分:2)

我也遇到了同样的错误。我之所以使用Maven编译项目。我让JAVA_HOME指向JDK7,因此java 1.7用于编译,在运行项目时我使用的是JDK1.5。更改.classpath文件中的以下条目或在屏幕截图中更改eclipse解决了问题。

classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5

或改变eclipse的运行配置 enter image description here

答案 4 :(得分:1)

还要检查项目中为更高版本的Java编译的任何jar文件。如果这些是您自己的库,则可以通过将目标版本属性更改为javac

来解决此问题
<javac destdir="${classes.dir}"
            debug="on" classpathref="project.classpath" target="1.6">

答案 5 :(得分:0)

另一种可能发生这种情况的情况是,当您从主机eclipse启动eclipse实例(用于调试等)时 - 在这种情况下,仅在项目的类路径上更改项目的级别或JRE库并没有帮助。重要的是用于启动目标eclipse环境的JRE。

答案 6 :(得分:0)

始终检查明显的情况。当我不小心为服务器的添加和删除操作抓取了错误的资源时,我收到了此错误。它很容易被忽视。

答案 7 :(得分:0)

从项目文件夹中删除项目特定的设置文件(Eclipse工作区/项目文件夹/ .settings /)也可以。 显然,我们需要在删除后清理和构建项目。

答案 8 :(得分:0)

将项目更改为使用java 1.7:为此,请按照以下步骤操作:

  • 更改编译器合规性级别
  • 将您的项目JRE / JDK更改为相同级别(在我的情况下为1.7)
  • 在项目引用的所有项目中执行相同的更改
  • 更改您的运行/调试配置以使用JRE / JDK(或相同级别)

不工作?

  • 删除项目Bin目录
  • 清洁
  • 重建

仍然没有用?

在项目的目录中:edit .settings / org.eclipse.jdt.core.prefs&gt;确保应用目标级别

祝你好运!

答案 9 :(得分:0)

我通过更改服务器所需的jre解决了这个问题(在我的情况下是tomcat)。 在Eclipse的“服务器”选项卡中,双击服务器(以打开用于服务器配置的页面),单击运行时环境,然后更改所需的JRE