【发布时间】:2011-07-21 16:32:11
【问题描述】:
我正在维护一个以 dcm4che 作为其库的旧 Java 应用程序。 dcm4che 库不仅仅是一个 jar 文件。它是一个文件夹,其中包含 jar 文件和其他文件夹,其中一些属性文件和类位于不同的文件夹中。我正在使用 WindowsXP 和 java 1.6。
当我们运行我们的应用程序时,我们需要通过执行以下操作将这些文件夹、jar 文件放入类路径中:
set CLASSPATH=.;%PROJ_HOME%\classes;^
%THIRDPARTY_HOME%\dcm4che;^
%THIRDPARTY_HOME%\dcm4che\classes;^
%THIRDPARTY_HOME%\dcm4che\resources;^
现在我尝试将它们全部放入一个 jar 文件中以简化源代码管理。 所以我创建了一个 manifest.txt 文件,内容如下:
Class-Path: classes;resources;lib\dcm4che.jar;getopt.jar
然后我通过运行 jar 创建一个 dcm4che.jar:
jar -cfm dcm4che.jar manifest.txt *
创建了一个 dcm4che.jar。我通过提取所有内容并检查清单文件来验证结果,并且我的类路径在那里:
Manifest-Version: 1.0
Class-Path: classes;resources;lib\dcm4che.jar;getopt.jar
Created-By: 1.6.0_25 (Sun Microsystems Inc.)
然后我修改应用程序类路径以指向新生成的 dcm4che.jar 并删除那些旧条目。
当我运行它时,我得到 NoClassDefFoundError。但该类位于新创建的 jar 文件中的 classes 文件夹下。
我错过了什么?
【问题讨论】: