什么导致了FileNotFoundException: ...pdq.jar with db2jcc4?

9
当将db2jcc4.jar添加到系统类路径时,Tomcat 8.0会在一个看似与我的项目pdq.jar没有关联的jar文件上引发FileNotFoundException。我无法在系统或任何其他地方找到它的存在,并且通过搜索得出了下面的答案。
在这种情况下,我的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个回答

10

在较新版本的Db2 jcc驱动程序中可能会出现以下问题:

从附带于Linux、UNIX或Windows操作系统上的Db2 10.5的IBM Data Server Driver for JDBC and SQLJ版本4.16开始,db2jcc4.jar的MANIFEST.MF文件将包含对pdq.jar的引用。

IBM支持提供了两个选项:

解决方法 为防止发生java.io.FileNotFoundException,您可以执行以下操作之一:

  • 编辑MANIFEST.MF文件,并删除此行:Class-Path: pdq.jar

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

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

<Context>
   ...
   <JarScanner  scanClassPath="false" />
   ...
</Context>

6
根据IBM的这篇知识库文章,问题来自MANIFEST文件,其中列出了pdq.jar,一个第三方优化工具。
我的lib文件夹中同时存在db2jcc4.jar和db2jcc4.10.1.jar。
虽然该文章建议编辑db2jcc4.jar中的MANIFEST文件,但版本10.1根本没有此条目。
删除db2jcc4.jar解决了我的问题,因此在这种情况下的解决方法也可以是将db2jcc4从旧版本升级到版本10.1,或者如果不可能,则按照说明编辑清单文件。

2

您只需要将jar db2jcc4.jar更新为db2jcc4-10.1.jar

您可以在此链接中找到maven依赖项/ Jar


非常感谢您的链接!真的节省了我很多时间。 - Akexis

0

Kayvan Tehrani的回答解释了这里发生了什么,以及可以忽略此错误。

清理日志的另一种方法是创建一个虚拟的pdq.jar文件并将其放置在Tomcat的lib文件夹中。

jar -cf pdq.jar ""

(从这个命令中收到的“:没有那个文件或目录”消息是预期的。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接