3

我和团队刚刚从一些没有时间继续的人那里接手了一个开发项目。该项目由一个使用 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

如果我们尝试通过常规浏览器访问 Web 服务,也会发生同样的情况。

但是,在“运行方式”->“Java 应用程序”中通过 Eclipse 运行项目时,它可以工作。

我已经阅读了很多帖子,包括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>
4

1 回答 1

5

尝试将您的 jersey-dependencies 更改为一个依赖项:jersey-bundle。使用 mvn assembly:single 与球衣文件似乎存在问题。

在这里找到的解决方案:仅当依赖项组装到单个 jar 中时才会抛出 Jersey 异常

于 2012-10-02T11:14:01.013 回答