是什么导致FileNotFoundException:...与db2jcc4一起使用的pdq.jar?

J E*_* II 4 java jdbc

将db2jcc4.jar添加到系统类路径时,Tomcat 8.0在jar文件中引发FileNotFoundException,该jar文件没有明显引用我的项目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>
Run Code Online (Sandbox Code Playgroud)

J E*_* II 6

根据IBM上的这篇知识库文章,问题来自于MANIFEST,其中列出了第三方优化工具pdq.jar。

我的 lib 文件夹中有 db2jcc4.jar 和 db2jcc4.10.1.jar 。

虽然本文建议编辑 db2jcc4.jar 中的 MANIFEST 文件,但版本 10.1 根本不包含此条目。

删除 db2jcc4.jar 解决了我的问题,因此这种情况下的解决方案也可能是将 db2jcc4 从旧版本升级到版本 10.1,或者如果不可能,请按照说明编辑清单文件。


Kay*_*ani 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支持 提供2个选项:

解决问题为了防止java.io.FileNotFoundException,您可以采取以下措施之一:

  • 编辑MANIFEST.MF文件,然后删除以下行:Class-Path:pdq.jar

  • 编辑Apache Tomcat 的context.xml文件,并添加如下所示的条目以将scanClassPath的值设置为false。

就我个人而言,我更喜欢第二种方法,可以按照以下步骤进行:

<Context>
   ...
   <JarScanner  scanClassPath="false" />
   ...
</Context>
Run Code Online (Sandbox Code Playgroud)