2013-08-19 127 views
0

我想從Linux中的命令行運行一個java項目,我的項目使用兩個外部jar文件。我很安寧的命令是使用classpath問題從命令行運行java項目?

的java -classpath -jar斌:共CLI-1.2.jar:BuildFrameworkLibrary.jar com.kpit.goa.common.tools.kivibuild.KIVIBuild

其中KIVIBuild是包含主要功能的類。但是,我得到的錯誤是:

[email protected]:~/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. 
+0

是'ParseException'內部包含'共CLI-1.2.jar'? –

+0

'java -classpath「。:bin/common-cli-1.2.jar:bin/BuildFrameworkLibrary.jar」com.kpit.goa.common.tools.kivibuild.KIVIBuild' – Khinsu

回答

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

而不是每次設置類路徑設置onces在現有的CLASSPATH變量,只是運行java命令

+0

我仍然收到錯誤找不到主要的類:com/kpit/goa/common/tools/kivibuild/KIVIBuild。程序將會退出。儘管KIVIBuild.class存在於相應的文件夾中 – baibhavk

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 

(相對於當前的工作目錄)

+0

如果我使用路徑分隔符,即java -classpath bin/common-cli-1.2.jar:BuildFrameworkLibrary.jar ...或「。」即java -classpath。:common-cli-1.2.jar:BuildFrameworkLibrary.jar ..,然後我得到以下錯誤:線程「main」中的異常java.lang.NoClassDefFoundError:com/kpit/goa/common/tools/kivibuild/KIVIBuild 引起:java.lang.ClassNotFoundException:com.kpit.goa.common.tools.kivibuild.KIVIBuild。程序將會退出。我使用bin:在linux classpath中--help建議用這種方式來包含jar文件。 Jar文件存在於項目的根路徑中。 – baibhavk

+0

錯誤是什麼? –

+0

錯誤是:找不到主要類:com.kpit.goa.common.tools.kivibuild.KIVIBuild。程序將會退出。 – baibhavk