【问题标题】:Issue: java.lang.UnsupportedClassVersionError: org/glassfish/jersey/servlet/ServletContainer问题:java.lang.UnsupportedClassVersionError: org/glassfish/jersey/servlet/ServletContainer
【发布时间】:2015-10-08 08:46:51
【问题描述】:

我编写了一个 RESTful Web 服务。下面是我的 Maven 依赖项。

<dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.6</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.9</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <version>3.0.12.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.spec.javax.annotation</groupId>
        <artifactId>jboss-annotations-api_1.1_spec</artifactId>
        <version>1.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>net.jcip</groupId>
        <artifactId>jcip-annotations</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
        <version>3.0.12.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>3.0.12.Final</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>

下面是我的web.xml

<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
  <param-name>jersey.config.server.provider.packages</param-name>
  <param-value>com.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
  <servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

在我的 Eclipse 中,我已将 JRE 指向 jre6,并将编译器版本指向 1.6。 Rest Web 服务运行良好。

我导出为WAR并将WAR文件放在tomcat的webapps文件夹中并部署。它正在部署。当我调用 Web 服务时出现问题,它抛出以下错误。

java.lang.UnsupportedClassVersionError: org/glassfish/jersey/servlet/ServletContainer : Unsupported major.minor version 51.0 (unable to load class org.glassfish.jersey.servlet.ServletContainer)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2961)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)

Tomcat 版本是 7,JDK 是 1.6,JRE 是 6。我知道错误是因为版本问题。

我该如何解决这个问题?任何人请帮我解决这个问题。

【问题讨论】:

    标签: java rest maven jersey jersey-2.0


    【解决方案1】:

    您的球衣库不支持 1.6 Java。看看是否有适用于 1.6 的球衣构建,或者升级你的 Java。

    更新

    Jersey 2.6 及更低版本支持 Java 1.6。 Jersey 2.7 及更高版本是使用 Java 7 编译的。

    【讨论】:

    • 我只能使用 java 1.6。你知道哪些 jersey JAR 可以在 java 1.6 下工作??????
    • @Kaushi 好吧,肯定是老的。他们可能有针对 jdk6 的特殊构建,我建议您查看 Maven Central 的库。
    • @Kaushi Jersey
    • pom.xml 中的 @peeskillet,我使用的是 2.17 版本。但仍然没有运气
    • @peeskillet ya u are rite.... 2.6 版本解决了我的问题。我对版本号感到困惑。非常感谢... :) 将此作为答案发布....
    【解决方案2】:

    问题如您所知using a version of jersey jar which is compiled using Java 7 and you are running using Java 6。 降级您的 Jersey 版本或将您的 Java 版本升级到 7。

    Unsupported major.minor version 51.0

    J2SE 8 = 52, J2SE 7 = 51, J2SE 6.0 = 50, J2SE 5.0 = 49, JDK 1.4 = 48, JDK 1.3 = 47, JDK 1.2 = 46, JDK 1.1 = 45

    【讨论】:

      【解决方案3】:

      这是因为您使用更高版本的 Java 编译它。例如,编译具有 Strings 开关的 Java 7 代码,然后尝试在 JRE 6(不支持 Strings 开关)上运行该应用程序,这就是你得到的。

      在 Java 6 中重新编译您的代码,或使用您编译它的 Java 版本运行代码。

      【讨论】:

      • 问题不是他的代码,而是泽西岛想要一个 > 1.6 Java 版本。
      • 不管是不是球衣码,问题依旧。如果您需要使用不推荐的 Java 6,则必须搜索支持 Java 6 的 Jersey,或者找到它的替代品。
      猜你喜欢
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2016-07-14
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多