1

我正在尝试从 linux 的命令行运行一个 java 项目,我的项目使用两个外部 jar 文件。我给出的命令是

java -classpath -jar bin:common-cli-1.2.jar:BuildFrameworkLibrary.jar com.kpit.goa.common.tools.kivibuild.KIVIBuild

其中 KIVIBuild 是包含主函数的类。但得到的错误是:

baibhav@baibhav:~/git/KiviBuild/Infra/RepoManagement/BuildManagement/KIVIBuild$ java -classpath bin:common-cli-1.2.jar:BuildFrameworkLibrary.jar com.kpit.goa.common.tools.kivibuild.KIVIBuild

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: com.kpit.goa.common.tools.kivibuild.KIVIBuild. Program will exit.
4

2 回答 2

3

您需要一个路径分隔符,例如

 bin/common-cli-1.2.jar:BuildFrameworkLibrary.jar 

冒号分隔各个 jar 文件的路径。例如在上面你引用了这两个文件

bin/common-cli-1.2.jar
BuildFrameworkLibrary.jar

并引用包含您编译类的目录,例如,如果它们在(比如说)中,target/classes则使用:

target/classes:bin/common-cli-1.2.jar:BuildFrameworkLibrary.jar

(相对于您当前的工作目录)

于 2013-08-19T14:38:38.863 回答
1

使用以下命令

javac -classpath bin/common-cli-1.2.jar:bin/BuildFrameworkLibrary.jar KIVIBuild.java -d .

不要忘记在命令末尾添加点

检查是否/com/kpit/goa/common/tools/kivibuild/KIVIBuild.class存在,如果是,请运行以下命令

java -classpath bin/common-cli-1.2.jar:bin/BuildFrameworkLibrary.jar com/kpit/goa/common/tools/kivibuild/KIVIBuild

http://www.linuxheadquarters.com/howto/classpath.shtml

而不是每次都设置类路径在现有的类路径变量中设置一次,然后运行 ​​java 命令

于 2013-08-19T14:42:18.003 回答