Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 某些库导致Tomcat无法部署_Java_Maven_Tomcat - Fatal编程技术网

Java 某些库导致Tomcat无法部署

Java 某些库导致Tomcat无法部署,java,maven,tomcat,Java,Maven,Tomcat,我只是在学习Tomcat,并且已经成功地将一个简单的测试WAR部署到Tomcat服务器。 然而,当我试图通过Maven添加一个库时,Tomcat的JarScanner就无法为我的程序加载类文件,说它找不到任何东西 09-Feb-2020 05:36:42.568信息[http-nio-80-exec-8]org.apache.catalina.startup.HostConfig.deployWAR部署web应用程序归档[/opt/tomcat/apache-tomcat-9.0.30/weba

我只是在学习Tomcat,并且已经成功地将一个简单的测试WAR部署到Tomcat服务器。 然而,当我试图通过Maven添加一个库时,Tomcat的JarScanner就无法为我的程序加载类文件,说它找不到任何东西

09-Feb-2020 05:36:42.568信息[http-nio-80-exec-8]org.apache.catalina.startup.HostConfig.deployWAR部署web应用程序归档[/opt/tomcat/apache-tomcat-9.0.30/webapps/api.war]
2020年2月9日05:36:42.668精细[http-nio-80-exec-8]org.apache.jasper.servlet.TldScanner.scanResourcePath在资源路径[/WEB-INF/]中未找到TLD文件。
2020年2月9日05:36:42.686信息[http-nio-80-exec-8]org.apache.catalina.startup.HostConfig.deployWAR web应用程序归档文件的部署[/opt/tomcat/apache-tomcat-9.0.30/webapps/api.war]在[117]毫秒内完成
但是,如果我从pom.xml(因此也从WAR)中删除库,它的负载会很好。 以下是正在加载的库:

  • 吉达
  • Trove4J
  • jsr305
  • 爪哇作品
  • 爪哇本地人作品
  • opus java api
  • jna
  • 注释
  • okhttp
  • 公共集合4
  • nv websocket客户端
  • slf4j api
  • 杰克逊数据绑定
  • 杰克逊注释
  • 杰克逊核心
此外,我已经尝试告诉JARScanner不要扫描context.xml和catalina.properties中的任何JAR文件

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
*.jar

这些都没有导致部署工作。 如果不排除主库(JDA),则Tomcat会报告ArrayIndexOutOfBounds异常。
服务器正在JDK 8上运行Tomcat 9,我的IDE也是如此。

从您的日志片段中可以看出,WAR似乎没有部署,实际上是部署了(请参见第三行):
web应用程序归档的部署[/opt/Tomcat/apache-Tomcat-9.0.30/webapps/api.WAR]在[117]毫秒内完成。

尝试将此输出与您认为“已部署”的战争输出进行比较,您可能会看到相同的消息(我现在没有tomcat在我的机器上验证这一点,但这是我的假设)

第二行:
在资源路径中找不到TLD文件…
基本上意味着战争中没有TLD文件,当然这并不意味着战争有错误

TLD代表标记库描述符—它代表JSP标记,而JSP标记不是Web存档中的必需组件


关于TLD的一些信息

如果我从pom.xml中删除JDA,这里是catalina.out:。当我从Maven的pom文件中删除依赖项时,它正确地找到了我的类文件,这一事实使我认为它是库。JDA的日志实际上是什么样子的?你能像这样添加完整的日志吗?你去吧。与问题帖子的输出几乎相同。刚刚添加了JDA,重新编译并上传到Tomcat。两个代码段都有一行:
org.apache.catalina.startup.HostConfig.deployWAR web应用程序归档的部署[/opt/Tomcat/apache-Tomcat-9.0.30/webapps/api.war]在[XXX]毫秒内完成了
,这意味着在这两种情况下,war都部署在Tomcat中(tomcat中有一个manager应用程序,您可以在其中查看所有已部署的WAR)-然而,战争在内部可能有所不同。这完全取决于它做了什么…再次,从tomcat的角度来看,在这两种情况下,战争在技术上都是正常的,并且它的部署…最终解决了问题,只是在这里进行了修复。JDA或它的一个库是为比Jersey Ser版本更高的Java版本编译的我使用的vlet是was(我猜是Java8对Java7),当它遇到lambda方法时导致ArrayIndexOOB异常。将Jersey Servlet升级到新版本解决了这个问题。