JAR无法在工作目录外找到引用库的类

时间:2016-07-20 09:40:43

标签: java jar executable-jar opencsv

我在项目中引用了一个外部库(Opencsv)。

我将Manifest文件添加到'src'文件夹中:

Manifest-Version: 1.0
Main-Class: DataClean.DataPreprocess
Class-path: jars/opencsv.jar

'jars'是一个文件夹,包含'src'文件夹中的opencsv jar文件。

编译的主类位于'src'中的'DataClean'文件夹中。

当我创建jar时,我使用:

jar cfm PromoPrice_CN.jar Manifest.txt *

此命令在'src'文件夹中运行。

然后,我创建的JAR只能在这个'src'目录中运行。否则,它给出了例外:

Exception in thread "main" java.lang.NoClassDefFoundError: com/opencsv/CSVReader
    at DataClean.DataPreprocess.dataClean(DataPreprocess.java:154)
    at DataClean.DataPreprocess.main(DataPreprocess.java:229)
Caused by: java.lang.ClassNotFoundException: com.opencsv.CSVReader
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

我用来运行jar的命令是:

java -jar C:\...\src\PromoPrice_CN.jar X Y Z

X,Y和Z是jar的三个输入参数。

请帮助我哪里做错了?

仅供参考,由于其他原因,JAR的创建必须在命令行中。

THX

0 个答案:

没有答案