1

Linux のコマンド ラインから Java プロジェクトを実行しようとしています。私のプロジェクトは 2 つの外部 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 ファイルへのパスを区切ります。たとえば、上記では 2 つのファイルを参照しています

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 に答える