【问题标题】:java.io.FileNotFoundException: /tomcat/lib/webservices-api.jarjava.io.FileNotFoundException: /tomcat/lib/webservices-api.jar
【发布时间】:2018-10-03 12:57:15
【问题描述】:

当我尝试部署我的war 文件时,catalina.out 出现错误:

org.apache.tomcat.util.scan.StandardJarScanner.processURLs Failed to scan [file:/tomcat/lib/webservices-api.jar] from classloader hierarchy
     java.io.FileNotFoundException: //tomcat/lib/webservices-api.jar (No such file or directory)
...................
org.apache.tomcat.util.scan.StandardJarScanner.processURLs Failed to scan [file:/tomcat/lib/webservices-api.jar] from classloader hierarchy
     java.io.FileNotFoundException: /tomcat/lib/webservices-rt_l10n.jar (No such file or directory)

但是,我在 lib 文件夹中有 webservices-api.jar:

ls -l /tomcat/lib/:

//some libs
-rw-rw-r--+ 1 root   root   14830691 19  2017 webservices-rt-2.3.jar
-rw-r--r-- 1 tomcat tomcat   201290 апр 19 18:24 webservices-api-2.3.jar

我怎样才能告诉tomсat 他忽略了版本,并使用了什么? 另外如何禁用搜索语言库?

更新:

堆栈跟踪:

23-Apr-2018 14:16:59.481 WARNING [http-nio-8080-exec-46] org.apache.tomcat.util.scan.StandardJarScanner.processURLs Failed to scan [file:/tomcat/lib/webservices-api.jar] from classloader hierarchy
 java.io.FileNotFoundException: /tomcat/lib/webservices-api.jar (No such file or directory)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:219)
        at java.util.zip.ZipFile.<init>(ZipFile.java:149)
        at java.util.jar.JarFile.<init>(JarFile.java:166)
        at java.util.jar.JarFile.<init>(JarFile.java:130)
        at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:170)
        at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:65)

【问题讨论】:

  • 你可能在你的战争中包装你不应该的罐子。
  • 首先,请发布整个堆栈跟踪。其次,您是否真的在尝试使用任何基于 Java 的 Web 服务?
  • @rmlan,不,我的 pom.xml 不包含这些库
  • @ChristopherSchultz,我添加了堆栈跟踪
  • 文件/tomcat/lib/webservices-api.jar是否存在? Tomcat 用户能否读取该文件并访问(r+x)从文件系统根目录到该文件的所有目录?

标签: java tomcat


【解决方案1】:

在 Tomcat 8.0.38 及更高版本中,我们有一个名为 scanManifest 的标志,用于扫描 jar 的 MANIFEST.MF 中的其他类路径条目。默认值为 true ,即扫描 jar 清单。 检查 MANIEST.MF 中是否有任何带有 CLASS-PATH 条目的 jar 引用此 jar 文件。 我遇到了类似的问题

May 07, 2019 11:33:21 AM org.apache.tomcat.util.scan.StandardJarScanner processURLs
WARNING: Failed to scan [file:/C:/apache-tomcat-9.0.8/lib/jaxws-api.jar] from classloader hierarchy
java.io.FileNotFoundException: C:\apache-tomcat-9.0.8\lib\jaxws-api.jar (The system cannot find the file specified)

发现,我的一个 jar 文件 jaxws-rt-2.1.3 将 jaxws-api.jar 作为类路径条目。我的库中有 jaxws-api-2.1.jar,所以 jarscanner 抱怨找不到文件,因为它试图找到没有版本名称的文件。

**在 TOMCAT_HOME/conf 下的 context.xml 中添加以下条目应该可以解决此问题,因为它将停止解析不存在的 jar 文件**

<JarScanner scanManifest="false"/>

我们还可以更正清单文件以包含 jar 版本,然后部署应用程序

【讨论】:

  • 在 context.xml 添加 有帮助。非常感谢!
【解决方案2】:

webservices-rt-xxx.jar 包含给定webservices-api.jar 的规范的实现。它们不一样!

因此,您还应该在 lib 文件夹中包含第二个 jar。

【讨论】:

  • 如果只有 webservices-api-2.3.jar,另一台服务器上的 Tomcat 可以正常工作。我怀疑问题出在特定设置中
  • @All_Safe 您在问题中提到了 webservices-rt-2.3.jar,而不是 webservices-api-2.3.jar。看看ls -l /tomcat/lib/returns 是什么
  • C.香槟。对不起我错了。 webservices-api-2.3.文件也在文件夹中
猜你喜欢
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 2012-02-26
  • 2016-03-24
相关资源
最近更新 更多