gpt4 book ai didi

java - 仅当执行 jar 文件时,REST 客户端中出现 ClientHandlerException

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:36 24 4
gpt4 key购买 nike

我已经设置了 REST Web 服务和客户端。 Web 服务部署在 Glassfish 服务器上。如果我从 netbeans 运行客户端的主类,一切都会正常。现在我使用 Maven 创建一个可执行的 jar 文件,如果我尝试运行这个 jar 文件,我会收到以下异常消息:

21.07.2013 13:40:05 com.sun.jersey.api.client.ClientResponse getEntity
SCHWERWIEGEND: A message body reader for Java class java.lang.String, and Java type class java.lang.String, and MIME media type application/xml was not found
21.07.2013 13:40:05 com.sun.jersey.api.client.ClientResponse getEntity
SCHWERWIEGEND: The registered message body readers compatible with the MIME media type are:
*/* ->
com.sun.jersey.atom.rome.impl.provider.entity.AtomFeedProvider
com.sun.jersey.atom.rome.impl.provider.entity.AtomEntryProvider

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class java.lang.String, and Java type class java.lang.String, and MIME media type application/xml was not found
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:561)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:517)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:684)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:507)
at de.movienexuscmd.MovieNexusWebserviceClient.getXml(MovieNexusWebserviceClient.java:52)
at de.movienexuscmd.App.run(App.java:20)
at de.movienexuscmd.App.main(App.java:16)

现在我真的不知道为什么只有在尝试执行jar文件时才会出现这个异常。希望任何人都可以提供帮助。

我的网络服务如下所示:

@Path("MovieNexus")
public class MovieNexusWebService {

@Context
private UriInfo context;

private MovieNexusFrontController frontController = null;

/**
* Creates a new instance of MovieNexusWebService
*/
public MovieNexusWebService() {
frontController = new MovieNexusFrontController();
}

/**
* Retrieves representation of an instance of
* de.webservice.MovieNexusWebService
*
* @return an instance of java.lang.String
*/
@GET
@Produces("application/xml")
public String getXml() {
return frontController.getRandomMovie().getMovieName();
}

/**
* PUT method for updating or creating an instance of MovieNexusWebService
*
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("application/xml")
public void putXml(String content) {
}
}

客户:

public class MovieNexusWebserviceClient {

private WebResource webResource;

private Client client;

private static final String BASE_URI = "http://localhost:17589/MovieNexusWebservice/webresources";

public MovieNexusWebserviceClient() {
com.sun.jersey.api.client.config.ClientConfig config = new com.sun.jersey.api.client.config.DefaultClientConfig();
client = Client.create(config);
webResource = client.resource(BASE_URI).path("MovieNexus");
}

public String getXml() throws UniformInterfaceException {
WebResource resource = webResource;
return resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML).get(String.class);
}

public void putXml(Object requestEntity) throws UniformInterfaceException {
webResource.type(javax.ws.rs.core.MediaType.APPLICATION_XML).put(requestEntity);
}

public void close() {
client.destroy();
}
}

问候

诺亚

最佳答案

经过几个小时的思考和尝试,我自己解决了这个问题。问题是由 maven 创建可执行 jar。其中缺少一些依赖项,因此我更改了插件配置:

        <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>mainclass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

关于java - 仅当执行 jar 文件时,REST 客户端中出现 ClientHandlerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772280/

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