Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Linux上的Jersey Grizzly服务器NoSuchMethodError_Java_Jersey_Jax Rs_Portability_Grizzly - Fatal编程技术网

Java Linux上的Jersey Grizzly服务器NoSuchMethodError

Java Linux上的Jersey Grizzly服务器NoSuchMethodError,java,jersey,jax-rs,portability,grizzly,Java,Jersey,Jax Rs,Portability,Grizzly,我有一个grizzly http服务器,在Windows上运行良好,但在Ubuntu上无法启动,引发以下异常: Exception in thread "main" java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; at org.glassfish.jersey.server.ApplicationHandler.<init>(Applica

我有一个grizzly http服务器,在Windows上运行良好,但在Ubuntu上无法启动,引发以下异常:

Exception in thread "main" java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
        at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:331)
        at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:311)
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.<init>(GrizzlyHttpContainer.java:337)
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory.createHttpServer(GrizzlyHttpServerFactory.java:119)
        at server.ServerCreator.startServer(ServerCreator.java:35)
        at server.ServerCreator.main(ServerCreator.java:41)

有什么建议可能是同一代码在Linux上引发上述异常的潜在原因吗?表明异常是由类路径上同时有JAX-RS 1和JAX-RS 2 JAR引起的,但我已经检查了这一点,如果是这种情况,它应该在Windows上引发相同的异常

可能与Jersey版本的碰撞有关。可能是maven transitive dependencies拉入了错误的Jersey版本。我同意这可能与Jersey版本冲突有关,但为什么这只会导致在Linux而不是Windows上引发异常?您好。我也遇到了同样的问题,你找到解决方案了吗?是的-基本上,在项目中的一些jar中,grizzly的版本是相互冲突的(jarhell)。一个罐子有旧版本,另一个有最新版本。它在Windows上工作而不是在Linux上工作的原因是java类加载器在不同环境中的行为不同(加载的类的顺序不能保证),因此在Windows上它将加载正确的依赖项,但在Linux上它加载了错误的依赖项,应用程序失败。因此,我建议您在依赖项中查找冲突版本的grizzly。我希望这能有所帮助,弄明白这一点真是一场噩梦。
Feb 04, 2016 5:57:42 PM org.glassfish.grizzly.http.server.NetworkListener start
INFO: Started listener bound to [localhost:10000]
Feb 04, 2016 5:57:42 PM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.