Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 使用maven和Jersey/Jackson设置生成的依赖于平台的.war文件?_Java_Maven_Tomcat_Jersey_Jackson - Fatal编程技术网

Java 使用maven和Jersey/Jackson设置生成的依赖于平台的.war文件?

Java 使用maven和Jersey/Jackson设置生成的依赖于平台的.war文件?,java,maven,tomcat,jersey,jackson,Java,Maven,Tomcat,Jersey,Jackson,我正在尝试编写一个小型REST服务作为Java todolist应用程序。 幸运的是,它在我的Windows10环境中的tomcat上运行。 不幸的是,它拒绝在我的Linux环境中的tomcat上运行(请参阅下面的详细信息)。 我认为Java的思想是独立于平台的。 陷阱在哪里?我做错了什么 环境详情 适用于Windows 10 Pro ApacheTomcat 8.5.4 jvm 1.8.0_101-b13 架构amd64 在Linux Ubuntu 14.04 LTS(4.4.0-34-g

我正在尝试编写一个小型REST服务作为Java todolist应用程序。 幸运的是,它在我的Windows10环境中的tomcat上运行。 不幸的是,它拒绝在我的Linux环境中的tomcat上运行(请参阅下面的详细信息)。 我认为Java的思想是独立于平台的。 陷阱在哪里?我做错了什么

环境详情 适用于Windows 10 Pro
  • ApacheTomcat 8.5.4
  • jvm 1.8.0_101-b13
  • 架构amd64
在Linux Ubuntu 14.04 LTS(4.4.0-34-generic)(在virtualbox中)上失败
  • ApacheTomcat 8.5.4
  • jvm 1.8.0_101-b13
  • 采用amd64体系结构
这里是指向我的文件的链接。很抱歉,我无法将其作为标记代码(markdown或html)发布到这里。45分钟后我放弃了。真可惜(

类型异常报告
Servlet todolist的消息Servlet.init()引发异常
说明服务器遇到内部错误,无法满足此请求。
例外
servlet todolist的javax.servlet.ServletException:servlet.init()引发异常
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
run(Thread.java:745)
根本原因
java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:331)
org.glassfish.jersey.servlet.WebComponent(WebComponent.java:392)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
run(Thread.java:745)
注意,Apache Tomcat/8.5.4日志中提供了根本原因的完整堆栈跟踪。


4.0.0
de.mathema.hc2016.server


感谢您的帮助!:)

pom将javax.servlet标记为已提供,以便您的应用程序使用Tomcat提供的版本。根据异常报告,Linux上的Tomcat似乎使用的是旧版本,其中不存在getProperties()方法


从中,getProperties()方法是在2.0中添加的,因此Linux Tomcat显然使用的是旧版本。

我将重新验证您的Linux环境。我能够在Mac OS/X和Ubuntu14.04下,在Tomcat 8.0.X和8.5.4中运行您的代码。我使用了javax.ws.rs.core.Application配置,因为您没有包含web.xml,但除此之外,它直接是您的代码。我同意@Andreas的说法,你有一些混合的库版本,但我不知道你为什么会遇到这个问题。您是否在Linux Tomcat上部署了其他内容?您是否对Tomcat安装下的“lib”目录进行了任何修改?

无法访问异常报告。你能告诉我错误是什么吗?你从2016年6月开始计算,但与2011年6月的
jersey json:1.8
相混合,从2016年3月开始计算。我认为你的代码不同步,尽管我不知道为什么它在Windows上工作。建议您尝试升级兼容版本的
jersey json
,然后重试。感谢您的分析和思考。今天我甚至尝试了jersey json:1.19.2,但没有成功。我会再试一次,并在这里报告错误消息。jersey json:1.19.1:在Windows上工作,在Linux上不工作。与以前相同的错误消息。无论如何谢谢你
javax.ws.rs.core.Application
不是来自
servlet api
。另外,OP已经说过Windows和Linux都在运行Tomcat8.5.4。@Andreas-是的-我的假设很糟糕。尽管是同一个Tomcat版本,但仍然存在版本不匹配的问题。感谢您的分析和思考。我添加了我的
web.xml
。我没有在tomcat上部署任何其他东西,它是一个fre