我正在尝试从JAR运行一个类。这个类不是这个jar中唯一的主类。此外,它需要许多其他jar文件,我保存在与此Jar相同的目录中。我尝试过的命令如下:
(mydir是我使用Windows平台放置所有jar的目录)
mysql-connector-java-5.1.13-bin.jar
需要 myProjImport.jar
才能运行,com.mycomp.myProj.importer.csv.TestImporter
是我正在尝试运行的类。
"C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties"
和"C:\temp\apollo_claims_test.txt"
是类TestImporter
所需的命令行参数
这是我尝试过的:
mydir>java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;. myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties" "C:\temp\apollo_claims_test.txt"
这是错误:
Exception in thread "main" java.lang.NoClassDefFoundError: myProjImport/jar
Caused by: java.lang.ClassNotFoundException: myProjImport.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: myProjImport.jar. Program will exit.
有人可以告诉我应该运行什么确切的命令吗?
答案 0 :(得分:8)
尝试:
java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties" "C:\temp\apollo_claims_test.txt
“
提供从pyProj Import.jar
所在目录运行它答案 1 :(得分:2)
如果指定了-jar选项,则忽略任何其他类路径选项。所以这不起作用:
java -jar MyJar.jar -classpath foo.jar
但是如果你把foo.jar名字放在MyJar.jar中的META-INF / manifest.mf中:
Class-Path: foo.jar
然后将在与MyJar.jar相同的级别搜索foo.jar,即在同一目录中搜索。
有时我只是解压缩所有依赖的JAR并将其内容打包到MyJar.jar中。通过这种方式减少依赖性。