将db2jcc4.jar添加到系统类路径时,Tomcat 8.0会对jar文件引发FileNotFoundException,该文件对我的项目pdq.jar没有明显的引用。
我无法在我的系统上找到它或它可能来自哪里,除非通过搜索找到了以下答案。
在这种情况下,我的CATALINA_HOME指向C:\ tomcat8.0 \ apache-tomcat-8.0.41,我的项目定义了以下maven依赖项:
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc4</artifactId>
<version>10.1</version>
<scope>system</scope>
<systemPath>${env.CATALINA_HOME}/lib/db2jcc4-10.1.jar</systemPath>
</dependency>
答案 0 :(得分:5)
这可能在较新版本的Db2 jcc驱动程序中发生:
从Linux和UNIX或Windows操作系统上的Db2 10.5附带的IBM Data Server Driver for JDBC和SQLJ版本4.16开始,用于db2jcc4.jar的MANIFEST.MF文件包含对pdq.jar的引用
IBM Support提供2个选项:
解决问题 为防止java.io.FileNotFoundException,可以采取以下措施之一:
编辑MANIFEST.MF文件,然后删除以下行:Class-Path:pdq.jar
编辑Apache Tomcat的 context.xml 文件,并添加类似于以下内容的条目以将scanClassPath的值设置为false。
我个人而言,我更喜欢第二种方法,可以通过以下方式完成:
<Context>
...
<JarScanner scanClassPath="false" />
...
</Context>
答案 1 :(得分:1)
根据this KB article on IBM,问题来自MANIFEST,它列出了第三方优化工具pdq.jar。
我的lib文件夹中有db2jcc4.jar和db2jcc4.10.1.jar。
虽然本文建议在db2jcc4.jar中编辑MANIFEST文件,但10.1版本根本不包含此条目。
删除db2jcc4.jar解决了我的问题,因此在这种情况下的解决方案也可以是将db2jcc4从旧版本升级到10.1版,或者如果不可能,请按照说明编辑清单文件。
答案 2 :(得分:0)
您只需要将jar db2jcc4.jar更新为db2jcc4-10.1.jar
您可以在该link上找到maven依赖项/ Jar
答案 3 :(得分:0)
Kayvan Tehrani's answer解释了这里的情况,可以忽略此错误。
清理日志的另一种方法是创建一个虚拟pdq.jar并将其放入tomcat的lib文件夹中。
jar -cf pdq.jar ""
(此命令中将出现“:无此类文件或目录”消息。)