是什么导致FileNotFoundException:... pdq.jar与db2jcc4?

时间:2017-09-22 15:06:44

标签: java jdbc

将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>

4 个答案:

答案 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 ""

(此命令中将出现“:无此类文件或目录”消息。)