我在项目中引用了一个外部库(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