gpt4 book ai didi

java.lang.ClassCastException : Cannot cast com. sun.jersey.core.impl.provider.entity.StringProvider 到 javax.ws.rs.ext.MessageBodyReader

转载 作者:行者123 更新时间:2023-12-01 12:53:38 24 4
gpt4 key购买 nike

我使用以下原型(prototype)创建了第一个 Jersey 项目

mvn 原型(prototype):生成 -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.2

项目构建成功。下面是命令提示符日志。

    Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.jar (204 KB
at 105.8 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom (12 KB at 10.8 KB
/sec)
.......
Downloaded: http://repo.maven.apache.org/maven2/org/apache/ant/ant/1.8.1/ant-1.8.1.jar (1479 KB at 139.0 KB/sec)
Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/1.8.3/groovy-1.8.3.jar (5394 KB at 164.4 KB/sec)
[INFO] Generating project in Interactive mode
[INFO] Archetype repository missing. Using the one from [org.glassfish.jersey.archetypes:jersey-quickstart-webapp:2.9] found in catalog remote
Downloading: http://repo.maven.apache.org/maven2/org/glassfish/jersey/archetypes/jersey-quickstart-webapp/2.2/jersey-quickstart-webapp-2.2.jar
Downloaded: http://repo.maven.apache.org/maven2/org/glassfish/jersey/archetypes/jersey-quickstart-webapp/2.2/jersey-quickstart-webapp-2.2.jar (7 KB at
4.7 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/glassfish/jersey/archetypes/jersey-quickstart-webapp/2.2/jersey-quickstart-webapp-2.2.pom
Downloaded: http://repo.maven.apache.org/maven2/org/glassfish/jersey/archetypes/jersey-quickstart-webapp/2.2/jersey-quickstart-webapp-2.2.pom (4 KB at
2.6 KB/sec)
Define value for property 'groupId': : com.jersey
Define value for property 'artifactId': : FirstJersey
Define value for property 'version': 1.0-SNAPSHOT: :
Define value for property 'package': com.jersey: :
Confirm properties configuration:
groupId: com.jersey
artifactId: FirstJersey
version: 1.0-SNAPSHOT
package: com.jersey
Y: : y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: jersey-quickstart-webapp:2.2
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.jersey
[INFO] Parameter: packageName, Value: com.jersey
[INFO] Parameter: package, Value: com.jersey
[INFO] Parameter: artifactId, Value: FirstJersey
[INFO] Parameter: basedir, Value: C:\v_prakash\code\jersey\generated
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: C:\v_prakash\code\jersey\generated\FirstJersey
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:09 min
[INFO] Finished at: 2014-06-04T17:33:54+05:30
[INFO] Final Memory: 9M/25M
[INFO] ------------------------------------------------------------------------
C:\v_prakash\code\jersey\generated>

我已将 Maven 项目导入到 Eclipse Juno 中。运行以下网址时,出现以下异常。

http://localhost:8080/FirstJersey/webapi/myresource

HTTP Status 500 - Servlet.init() for servlet Jersey Web Application threw exception

--------------------------------------------------------------------------------

type Exception report

message Servlet.init() for servlet Jersey Web Application threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet Jersey Web Application threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)


root cause

java.lang.ClassCastException: Cannot cast com.sun.jersey.core.impl.provider.entity.StringProvider to javax.ws.rs.ext.MessageBodyReader
java.lang.Class.cast(Unknown Source)
org.glassfish.jersey.internal.ServiceFinder$LazyObjectIterator.hasNext(ServiceFinder.java:689)
org.glassfish.jersey.internal.ServiceFinderBinder.configure(ServiceFinderBinder.java:91)
org.glassfish.hk2.utilities.binding.AbstractBinder.bind(AbstractBinder.java:171)
org.glassfish.hk2.utilities.binding.AbstractBinder.install(AbstractBinder.java:315)
org.glassfish.jersey.message.internal.MessagingBinders$MessageBodyProviders.configure(MessagingBinders.java:122)
org.glassfish.hk2.utilities.binding.AbstractBinder.bind(AbstractBinder.java:171)
org.glassfish.hk2.utilities.binding.AbstractBinder.install(AbstractBinder.java:315)
org.glassfish.jersey.server.ServerBinder.configure(ServerBinder.java:123)
org.glassfish.hk2.utilities.binding.AbstractBinder.bind(AbstractBinder.java:171)
org.glassfish.jersey.internal.inject.Injections.bind(Injections.java:157)
org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:147)
org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:137)
org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:271)
org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:298)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
javax.servlet.GenericServlet.init(GenericServlet.java:160)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

下面是 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Jersey Web Application</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.jersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</web-app>

下面是java类。

package com.jersey;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
* Root resource (exposed at "myresource" path)
*/
@Path("myresource")
public class MyResource {

/**
* Method handling HTTP GET requests. The returned object will be sent
* to the client as "text/plain" media type.
*
* @return String that will be returned as a text/plain response.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it!";
}
}

下面是 pom.xml 文件。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.jersey</groupId>
<artifactId>FirstJersey</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>FirstJersey</name>

<build>
<finalName>FirstJersey</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<inherited>true</inherited>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<!-- uncomment this to get JSON support
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
-->
</dependencies>
<properties>
<jersey.version>2.2</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

正在开发以下版本。

  1. Jdk-1.7.0
  2. apache-tomcat-7.0.34
  3. eclipse 朱诺
  4. apache-maven-3.2.1

我还尝试使用删除的 Maven 存储库文件夹并更新项目,以便创建新的本地存储库。

请告诉我解决方案。提前致谢。

最佳答案

在版本 2.6 之前,Jersey 是使用 Java SE 6 编译的。Jersey 2.7 中对此进行了更改。现在几乎所有 Jersey 组件都是使用 Java SE 7 目标编译的。这意味着您至少需要 Java SE 7 才能编译和运行使用最新 Jersey 的应用程序。只有 core-common 和 core-client 模块仍然使用可通过 Java SE 6 运行的 Java 类版本进行编译。

下面是相同的链接 https://jersey.java.net/documentation/latest/modules-and-dependencies.html

所以我升级到了Jdk 1.7支持的以下Archetype

mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.9

关于java.lang.ClassCastException : Cannot cast com. sun.jersey.core.impl.provider.entity.StringProvider 到 javax.ws.rs.ext.MessageBodyReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com