eclipse中的java.lang.UnsupportedClassVersionError

我真的不是Java程序员,所以我发布了这个问题。 exception是在eclipse项目的主类中抛出java.lang.UnsupportedClassVersionError。 如果我注释掉这个类有的导入,它编译并运行正常。 如果我重新放入导入,它就不起作用。 这是否意味着我导入的库是使用比我更新或更旧版本的java编译的? 当我在系统上执行java -version时,我得到1.5_07

我本来可以发誓这实际上是在上周工作,但也许在日食中有些设置被调整了? eclipse中的Java Build Path是我需要查找的,以检查JRE和编译器版本吗?

在Eclipse中,编译器版本的设置独立于JRE版本。 这意味着您可以将编译器设置为Java版本1.6并使用JRE 1.5。 在这种情况下,您编译的类无法运行。

您可以在Window / Preferences / Java / Compiler中检查默认编译器合规性级别的Window / Preferences / Java / Compiler ,或项目特定编译器合规性级别的项目属性。 将该级别与项目中使用的JRE( Project / Properties / Java Build Path -> Libraries / JRE System Library )以及程序的启动配置(通过“ Run / Run Configurations...菜单)进行比较。

UnsupportedClassVersionError意味着您使用的Java运行时环境无法识别您尝试执行的类文件的版本。 导致此错误的最常见原因是尝试在较旧的Java版本上使用为较新Java版本编译的类文件 – 例如,您尝试在Java 5运行时环境中使用为Java 6编译的类。

正如Eugene解释的那样,Eclipse有自己的内置编译器,它不使用JDK中的编译器 – 所以即使你在Java 5上运行,你也可以使用Java 6类文件。

Christian解释了如何在Eclipse中设置Java类文件版本。

Eclipse没有使用JDK编译器,但它有自己的编译器,可以为任何JRE生成字节码。 您需要确保项目中的编译器设置设置为与您在Eclipse中注册的JRE相同或更低的版本。 请参阅Window / Preferences / Java / Installed JRE,并检查启动配置中使用的JRE(请参阅运行菜单)。

如果导入的类来自外部库(即,不是从项目中的源代码编译),那么您应该validation用于项目的JRE对于此库是否足够新。

如果您在Eclipse中使用Maven,则可以使用Maven插件更新项目,然后执行Maven“清理”。 在我的情况下,这解决了这个错误的愚蠢和意外的表现。

我知道这是一个旧线程,但我最近冒险遇到了这种类型的错误。

尝试使用Ant构建文件在Eclipse中编译项目时。

  • Eclipse Kepler(Java 1.7)
  • ant1.7
  • Project = Java 1.5

修改了所有内部路径和编译器设置以查看Java 1.5,并且在Eclipse中构建的项目很好。

当尝试使用Ant编译时,我在eclipse中得到了java.lang.UnsupportedClassVersionError并开始环顾四周 – 包括在这里并找到这个页面。

我的决议是这样的:

 Windows > Preferences > Ant > Runtime > Global Entries 

Global Entries指向Java 1.7 tools.jar

我添加了一个新的外部Jar(在右侧菜单上)并将其指向Java 1.5 tools.jar

我删除了原始条目(1.7 tools.jar),我的ant构建开始工作。