java.lang.UnsupportedClassVersionError:.class文件中的版本号不正确?

我得到这个错误,当我包含一个开源库,我不得不从源代码编译。 现在,networking上的所有build议都表明代码被编译成一个版本,并在另一个版本(旧的新版本)中执行。 但是,我的系统上只有一个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

因此,我必须得出其他的结论,内部的一个类本身,抛出exception? 这甚至可能吗?

我知道这样的错误信息通常是正确的。 当你不可能(在你的脑海里)被报告的错误是什么时,你就会在另外一个地方寻找问题……只是在几小时后才发现原来的错误信息确实是正确的。

既然你使用的是Eclipse,我认为Thilo是正确的。你得到这个消息的最可能的原因是你的一个项目正在编译1.6类。 不要紧,如果系统上只有1.5 JRE,因为Eclipse有它自己的编译器(不是javac),只需要1.5 JRE来编译1.6类。 这可能是奇怪的,一个设置需要不加限制,以允许这个,但我只是设法做到这一点。

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

在这里输入图像描述

你有没有尝试做一个完整的“干净”,然后在Eclipse中重build(项目 – >清洁…)?

你能够直接从命令行编译并运行“javac”和“java”吗? 这是否正常工作?

如果你右键点击你的项目,进入“属性”,然后转到“Java构buildpath”,任何选项卡下是否有任何可疑条目? 这基本上是你的CLASSPATH。

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

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

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

如果解决了这个问题,试着看Eclipse是否有一些不正确的编译器设置。 具体来说就是针对Java 5。

我也有同样的错误。 我正在使用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的运行configuration中改变为 在这里输入图像描述

还要检查项目中已经被编译用于更高版本的Java的任何jar文件。 如果这些是您自己的库,您可以通过将目标版本属性更改为javac来解决此问题

 <javac destdir="${classes.dir}" debug="on" classpathref="project.classpath" target="1.6"> 

另一个可能发生的情况是当你从一个主机eclipse启动一个eclipse实例(用于debugging等)时 – 在这种情况下,单独修改项目的级别或JRE库对项目的类path没有帮助。 重要的是JRE用来启动目标eclipse环境。

总是检查明显。 当我意外地抓取服务器添加和删除操作的错误资源时,我得到了这个错误。 可以很容易忽视。

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

改变项目使用Java 1.7:为了这个工作,请按照下列步骤操作:

  • 更改编译器符合性级别
  • 将您的项目JRE / JDK更改为相同级别(在我的情况下为1.7)
  • 在项目中引用的所有项目中进行相同的更改
  • 将您的运行/debuggingconfiguration更改为使用JRE / JDK(或同一级别)

不工作?

  • 删除项目的Bin目录
  • 清洁
  • 重build

还是行不通?

在你的项目目录中:编辑.settings / org.eclipse.jdt.core.prefs>确保你的目标级别被应用

祝你好运!