org/hibernate/HibernateException :不支持的 major.minor 版本 52.0(无



我正在做这个项目,我有一个用Java(HttpServlet)完成的Web服务,它使用Hibernate选择,插入和更新信息到数据库中,并将对象数组作为JSON返回给连接到JSON端点的人。

我在本地计算机上创建了它,它工作正常。但是,我现在正在尝试查看它将如何在实际服务器上而不是本地工作。

所以我通过SSH连接到服务器并将.war版本复制到Tomcat webapps文件夹,尝试运行它,然后出现以下错误:

javax.servlet.ServletException: Servlet execution threw an exception
root cause java.lang.UnsupportedClassVersionError: org/hibernate/HibernateException : Unsupported major.minor version 52.0 (unable to load class org.hibernate.HibernateException)

因此,我自然而然地查看了StackOverflow以查看此错误的内容,并且我发现这是当您在一个版本的Java中创建项目并尝试在较差的Java机器上运行该项目时。我确实做到了。

我使用 Java 8 创建了我的项目,并在服务器上的 Java 7 上运行它。所以我更新了服务器以使用 Java 8。但是,更新到Java 8后,我仍然收到相同的错误。

如果我运行java -version命令,我会得到以下结果:

本地计算机:

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

服务器:

java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

如您所见,我的本地机器上有java 1.8.0_121,服务器上有java 1.8.0._111。你认为这有可能是问题所在吗?它们不都是Java 8吗?

另外,Tomcat如何知道使用哪个Java?我在服务器上有 3 个版本(2 个版本的 Java 7 和一个版本的 Java 8,java 1.8.0_111)。雄猫怎么知道要使用哪一个?

为了选择使用哪一个,我使用了sudo update-alternatives --config java命令并从那里选择了 1.8.0_111 版本(服务器是 Ubuntu 12.04)。

问题是 - 我不断收到该错误:java.lang.UnsupportedClassVersionError: org/hibernate/HibernateException : Unsupported major.minor version 52.0 (unable to load class org.hibernate.HibernateException)- 我无法在服务器上运行我的项目。

有什么建议吗?

当我几天前收到此错误时,我的机器上运行了不同版本的JDK和JRE。我通过在项目的构建路径和窗口首选项->Java->安装的JRE中设置正确的JRE路径来纠正它。 另外,如果你去 setenv.bat在你的 Tomcat\bin,在那里你指定 Tomcat 应该使用哪个版本的 java,指定
this:set "JRE_HOME=%ProgramFiles%\Java\jre1.8.0_121">,(obv,你的版本可能不同,所以相应地改变它)。 我希望能回答您的疑问!

编辑:如果您想知道setenv.bat是什么,请参阅:https://docs.oracle.com/cd/E40518_01/integrator.311/integrator_install/src/cli_ldi_server_config.html 它解释了这个bat文件应该包含的内容。

根据文档,

Hibernate 5.2 及更高版本至少需要 Java 1.8 和 JDBC 4.2。

Hibernate 5.1 及更早的版本至少需要 Java 1.6 和 JDBC 4.0。

从源代码构建 Hibernate 5.1 或更早版本时,由于 JDK 1.6 编译器中的错误,您需要 Java 1.7。

最新更新