我真的不是Java程序员,所以我发布了这个问题。异常是在Eclipse项目的主类中抛出java.lang.UnsupportedClassVersionError。如果我注释掉这个类有的导入,它编译并运行正常。如果我重新放入导入,它就不起作用。这是否意味着我导入的库是使用比我更新或更旧版本的java编译的?当我在系统上执行java -version时,我得到1.5_07
我可以发誓这实际上是在上周工作,但也许在eclipse中的某些设置被调整了? eclipse中的Java Build Path是我需要查找的JRE和编译器版本吗?
答案 0 :(得分:14)
在Eclipse中,编译器版本的设置独立于JRE版本。这意味着您可以将编译器设置为Java版本1.6并使用JRE 1.5。在这种情况下,您编译的类无法运行。
您可以在Window / Preferences / Java / Compiler
中查看默认编译器合规性级别的首选项,或项目特定编译器合规性级别的项目属性。将该级别与项目中使用的JRE(Project / Properties / Java Build Path -> Libraries / JRE System Library
)和程序的启动配置(通过Run / Run Configurations...
菜单)进行比较。
答案 1 :(得分:2)
UnsupportedClassVersionError
表示您使用的Java运行时环境无法识别您尝试执行的类文件的版本。导致此错误的最常见原因是尝试在较旧的Java版本上使用为较新的Java版本编译的类文件 - 例如,您尝试在Java 5运行时环境中使用为Java 6编译的类。
正如Eugene所解释的那样,Eclipse有自己的内置编译器,它不使用JDK中的编译器 - 所以即使你在Java 5上运行,也是如何最终得到Java 6类文件的。
Christian解释了如何在Eclipse中设置Java类文件版本。
答案 2 :(得分:0)
Eclipse不使用JDK编译器,但有自己的编译器可以为任何JRE生成字节码。您需要确保项目中的编译器设置设置为与您在Eclipse中注册的JRE相同或更低的版本。请参阅Window / Preferences / Java / Installed JRE,并检查启动配置中使用的JRE(请参阅运行菜单)。
答案 3 :(得分:0)
如果导入的类来自外部库(即,不是从项目中的源代码编译),那么您应该验证用于项目的JRE对于此库是否足够新。
答案 4 :(得分:0)
如果您在Eclipse中使用Maven,则可以使用Maven插件更新项目,然后执行Maven“清理”。在我的情况下,这解决了这个错误的愚蠢和意外的表现。