2012-02-22 39 views
70

我有3個jar文件和一個依賴於這些jar文件的.java文件。如何使用命令提示符編譯帶有這些jar文件的.java文件?如何使用java文件包含jar文件並在命令提示符下編譯

+7

鍵入「javac -help」 – 2012-02-22 12:59:37

+2

http://docs.oracle.com/javase/6/docs/technotes/tools/index.html#basic – 2012-02-22 13:00:38

+2

hope [this](http://stackoverflow.com/questions/1064481/newbie-question-how-to-include-jar-files-when-compiling)幫助你.. – 2012-02-22 13:07:10

回答

12

嘗試通過環境變量設置的所有依賴jar文件添加到您的類路徑,或者使用下面的步驟:

  1. 打開命令提示符。
  2. 將目錄更改爲您所在位置java 要編譯的文件。
  3. 按如下所示設置爲你所依賴的jar文件的類路徑:

    set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;

  4. 現在,你可以編譯你的java文件。 (命令:javac YourJavaFile.java

希望這會解決您的依賴性問題。

67

您可以使用「-cp」選項將您的jar文件包含在「javac」命令中。

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java 

而不是「-cp」你也可以使用「-classpath」

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java 

你可以包括你每次通過正確設置環境變量「CLASSPATH」編譯時的罐子。環境變量將存儲需要用於編譯/執行任何java文件的jar和類的路徑。每次編譯文件時,您都不必單獨包含這些罐子。

不同的機器有不同的方法來將類路徑設置爲環境變量。 Windows,Linux等的命令是不同的。

你可以在this blog找到更多詳細信息。

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html 
+7

'javac -classpath「。:/ home/path/mail.jar; /home/path/servlet.jar」MyJavaFile.java「爲我工作。我正在使用mac。我在某處讀到':'用於unix。 – Sri 2016-05-25 05:01:48

+1

我已經使用過這個命令,但是當試圖訪問jar文件中存在的類時,我得到了ClassNotFoundException。 – 2016-05-25 17:39:30

9

語法將運行在Windows DOS命令工作:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java 
+3

成功執行上述命令後如何運行java類文件? – 2017-03-16 14:44:13

11

請在Linux上嘗試

javac -cp jarfile source file 

實例: -

javac -cp .:/jars/* com/template/*.java 
+0

當我嘗試**例子: - **,將'。/ jars'替換爲我的JAR文件所在的目錄時,我收到錯誤消息'javac:invalid flag:/ location/of/first/JAR/file.jar'。 – 2016-01-07 23:55:04

+0

http://stackoverflow.com/questions/27915204/javac-invalid-flag-activation-1-1-jar請參考這個,它可能會解決你的問題 – Jamsheer 2016-01-08 03:42:06

4

這將創建一個.class文件:

javac -classpath "[jarname with specified path]" [java filename] 

這將執行類文件:

java -cp [jarname with specified path]: [java filename] 
+1

java命令顯示錯誤引起:** java.lang。 ClassNotFoundException的:org.slf4j.LoggerFactory ** 我想 ** **編譯' javac的-classpath 「/home/scorncer/Downloads/spark-core-2.3.jar」 MyFile.java' 和**運行** 'java -cp /home/scorncer/Downloads/spark-core-2.3.jar:MyFile.java 我也試過 java -cp /home/scorncer/Downloads/spark-core-2.3.jar:MyFile' – 2017-03-16 14:47:53

3

嘗試。

javac -cp .:jars/jar1:jars/jar2:jars/jar3 com/source/*.java 
0

如果您在使用Ubuntu:

/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java 

轉到文件夾位置(開包結構)

/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample 

注:請參閱文件位置和包名

相關問題