UnsupportedClassVersionError 不支持major.minor 51.0版无法加载类[重复]

Posted

技术标签:

【中文标题】UnsupportedClassVersionError 不支持major.minor 51.0版无法加载类[重复]【英文标题】:UnsupportedClassVersionError unsupported major.minor version 51.0 unable to load class [duplicate] 【发布时间】:2012-02-17 10:58:51 【问题描述】:

可能重复:Exception in thread “main” java.lang.UnsupportedClassVersionError: a (Unsupporte d major.minor version 51.0)

我已经使用 jdk 1.7.0,Eclipse IDE (Indigo) 在 java 中开发了一个 Web 应用程序,并在 eclipse ide 中配置的 tomcat(apache-tomcat-7.0.23) 上运行该应用程序。

当我尝试通过 IDE 运行我的应用程序时,它运行良好,但是当我创建它的 war 并将其放置在 apache 部署文件夹(webapps)中并从 IDE 外部运行它时,开始页面会成功加载,但是当我尝试这样做时对它的任何操作都会给我一个错误

UnsupportedClassVersionError unsupported major.minor version 51.0 unable to load class bean.myclassname

我已经检查了 ide 之外的 java 版本,它的 jdk 1.7.0 并且 JAVA_HOME 环境变量设置为 C:\Program Files\Java\jdk1.7.0_01 。

【问题讨论】:

作为 Java 初学者,我认为这些问题似乎没有重复。问题和解决方案的细微差别使 Java 新手在清晰度方面大为不同。很高兴这个在这里,另一个不会帮助我解决我的问题,但是这个可以。 【参考方案1】:

嗯,大概它在外部运行时没有使用相同版本的 Java。 仔细查看启动脚本以找到它选择要运行的 Java 版本的位置。您还应该检查启动日志以查看它们是否指示正在运行的版本。

或者,除非您需要 Java 7 功能,否则您始终可以将 Eclipse 中的编译器首选项更改为以 1.6 为目标。

【讨论】:

是的,最初它是 1.6,但后来我将其更改为 1.7,这需要重建应用程序,所以我再次重建它,但存在同样的问题 @NishitJain:如果您之前使用 1.6 的目标进行构建,那么它一定是导致问题的其他 jar 文件。日志是否包含有关它尝试加载的内容的更多信息? 信息:部署 Web 应用程序存档 C:\Program Files\Apache Software Foundat ion\apache-tomcat-7.0.23\webapps\DemoWebApp.war Jan 24, 2012 12:40:54 PM org. apache.catalina.util.SessionIdGenerator createSecur eRandom 它正在尝试仅加载 sing war 文件,这是我的 web 应用程序 war 文件,我已将其替换为 1.7 版的 war 构建 @NishitJain:请您在您的问题中发布完整的日志部分 - 包括带有错误消息本身的日志条目。您是否查看了日志以了解它所使用的 Java 版本? 是的,约翰你是对的,它首先加载 jdk 1.6.29 版本而不是 jdk 1.7.0 版本,这也是在路径变量中指定的我刚刚从变量中删除了 jdk 1.6.29,它也需要计算机重新启动,因为即使在删除 jdk 1.6.29 路径之后,tomcat 也试图首先加载相同的内容,因此在重新启动系统并再次初始化 tomcat 后,它仅从路径变量加载 jdk 1.7.0 版本,然后我运行我的应用程序运行.......谢谢乔恩【参考方案2】:

即使您在 eclipse 中的 JDK 是 1.7,您也需要确保 eclipse 编译级别也设置为 1.7。您可以检查编译级别--> Window-->Preferences--> Java--Compiler--编译级别。

在编译级别与运行时不匹配的情况下会发生不支持的重大小错误。

【讨论】:

是的,最初它是 1.6,但后来我将其更改为 1.7,这需要重建应用程序,所以我再次重建它,但存在同样的问题 我解决了这个问题,Tomcat 指向了 jre6,我刚刚安装了 jre7 并将 JAVA_HOME 和 JRE_HOME 指针指向它而不是 JE6,我再次运行 Apache 并部署了我的 Web 应用程序,它运行良好。 对于 Java 初学者来说,您的答案比所选答案更清晰、更具描述性。谢谢。【参考方案3】:

java_home 环境变量应该指向正确版本的java安装目录的位置,以便tomcat以正确的版本启动。例如,您使用 java 1.7 构建项目,然后确保 JAVA_HOME 环境变量指向您机器中的 jdk 1.7 安装目录。

我有同样的问题,当我在 tomcat 中部署战争并运行时,链接会抛出错误。但是将变量 - JAVA_HOME 指向 jdk 1.7 解决了这个问题,因为我的 war 文件是在 java 1.7 环境中构建的。

【讨论】:

对不起。不适合我。【参考方案4】:

尝试将以下内容添加到您的 eclipse.ini 文件中:

-vm
C:\Program Files\Java\jdk1.7.0_01\bin\java.exe

您可能还必须将同一文件中的 Dosgi.requiredJavaVersion 更改为 1.7。

【讨论】:

以上是关于UnsupportedClassVersionError 不支持major.minor 51.0版无法加载类[重复]的主要内容,如果未能解决你的问题,请参考以下文章