如何在JDK 1.7上运行Jersey 2.26?

5

我正在使用JDK1.7来运行我的应用程序。

我升级了jersey 2.26,现在出现了以下错误:

严重: Servlet [Jersey Web Application] in web application [/spcsis-1.0] threw load() exception
java.lang.UnsupportedClassVersionError: org/glassfish/jersey/servlet/ServletContainer : Unsupported major.minor version 52.0 (unable to load class org.glassfish.jersey.servlet.ServletContainer)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3129)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1341)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1827)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:504)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:486)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:113)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1146)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1085)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5318)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5610)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)

我把jdk换成了1.8版本,这样它就能正常运行了,但是我的项目需要使用jdk1.7版本。

有人可以帮我解决这个问题吗?

3个回答

12

从Jersey 2.26开始,所有模块仅支持Java SE 8

请参阅jersey 依赖项

在版本2.6之前,Jersey使用Java SE 6进行编译。这在Jersey 2.7中已更改。

直到版本2.25.x,几乎所有Jersey组件都是使用Java SE 7目标进行编译的。这意味着,您需要至少Java SE 7才能编译和运行使用最新Jersey的应用程序。只有核心公共和核心客户端模块仍使用可在Java SE 6上运行的Java类版本进行编译。

自Jersey 2.26以来,所有模块都使用Java SE 8构建,并且不支持在旧的Java SE发行版上运行。


那我最好把Jersey 2.26改成2.25,这样我就可以使用JDK 1.7了,对吧? - pangguoming

2

你唯一的选择就是使用Java 7重新构建Jersey。


也许我可以使用 Jersey 2.25,这个版本是用 Java 7 构建的吗? - pangguoming

1

您需要使用Jersey 2.13版本,这是最后一个由JDK 1.7编译的版本(请查看JAR包内的MANIFEST文件)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接