我和小组刚从一些没有时间继续的人手中接过了一个开发项目。该项目包括一个使用jersey和jetty的RESTful服务器,以及一个java客户端。不幸的是,它们不可用,我们一直试图部署服务器。
他们一直在使用eclipse进行开发,而对于服务器项目,maven已经被用来处理依赖关系。他们没有使用maven来部署.jar文件,但是他们只是通过eclipse提取它们。
我们使用maven-install创建了一个jar文件,只是通过Eclipse导出。在这两种情况下,我们设法启动并运行,但是当我们启动客户端时,我们在服务器上收到以下错误:
Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class java.lang.String, and Java type class java.lang.String, and MIME media type text/plain was not found
如果我们尝试通过常规浏览器访问网络服务,也会发生同样的情况。
但是,当通过Eclipse运行项目时,如“运行方式” - >“Java应用程序”,它可以工作。
我已经阅读了很多帖子,包括A message body writer for Java class ... and MIME media type text/html was not found,并且我添加了jersey-json依赖项,但同样的错误发生了。
资源以这种方式定义:
@Path("/{token}/users")
public class Users {
@GET
@Path("/show/{username}")
@Produces("text/plain")
public String getUser(@PathParam("username") String username,
@PathParam("token") String token) {
(...)
}
我们尚未研究过实际的HTTP请求/响应,但如果有人认为这些信息中的任何信息都很有趣,可能会这样做。
感谢您的帮助!任何意见都表示赞赏!
编辑: 使用maven-assembly进行部署,POM文件包含此(以及更多):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>no.abakus.backup.abacash.webservice.AbaCashCoreLauncher</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:5)
尝试将您的泽西依赖项更改为一个依赖项:jersey-bundle。使用mvn程序集似乎存在问题:单个带有泽西文件。
此处找到解决方案:Jersey exception only thrown when depencencies assembled into a single jar