ClassNotFoundException:org.eclipse.jetty.util.Decorator

时间:2015-11-16 15:56:22

标签: java maven jersey jetty embedded-jetty

我正在尝试使用jetty构建一个自包含的Web服务器。由于我发现手动管理所需的罐子有点困难,我决定使用Maven。 通过以下一些示例和教程我结束了这个:

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-server</artifactId>
    <version>9.3.0.RC0</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-servlet</artifactId>
    <version>9.3.0.RC0</version>
</dependency>

它不起作用:运行程序会在

上抛出类未找到的异常
org.eclipse.jetty.util.Decorator

我尝试了不同的版本,其他缺少类。 启动服务器的代码是:

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");

Server jettyServer = new Server(8383);
jettyServer.setHandler(context);

ServletHolder jerseyServlet = context.addServlet(
    org.glassfish.jersey.servlet.ServletContainer.class, "/*");
jerseyServlet.setInitOrder(0);

// Tells the Jersey Servlet which REST service/class to load.
jerseyServlet.setInitParameter("jersey.config.server.provider.classnames",
    EntryPoint.class.getCanonicalName());

try {
    jettyServer.start();
    jettyServer.join();
} finally {
    jettyServer.destroy();
}

由于它也使用泽西岛,我也依赖于球衣,我没有发布,因为错误似乎是在码头。这不应该是困难的,但确实如此。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。查看 jersey-container-jetty-http ,您可以注意到它在旧版本中使用 jetty-util 。所以,一旦你排除了这种依赖关系(如下面的例子),它应该可以正常工作。

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-jetty-http</artifactId>
    <version>${version.jersey}</version>
    <exclusions>
        <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-util</artifactId>
        </exclusion>
    </exclusions>
</dependency>

答案 1 :(得分:1)

与9.3.0.M0版相同的问题 jersey-container-jetty-http不帮我。 解决方案:

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-util</artifactId>
    <version>9.3.0.M0</version>
</dependency>