簡體   English   中英

如何使用 .jar 庫編譯 Java 程序

[英]How to compile Java program with .jar library

我無法讓 javac 識別我試圖擴展的外部 .jar 文件。 我在同一個目錄中有兩個文件:TestConsole.java 和 acm.jar。 我正在使用以下命令從同一目錄編譯:

javac -classpath .:acm.jar TestConsole.java

但似乎 javac 只是忽略了 acm.jar。 它給了我錯誤:

TestConsole.java:1: package acm does not exist
import acm.program;
          ^

當然,acm.program 是 acm.jar 中的一個包。 acm.jar 中的所有類都已編譯; 我只想在我的課程中使用它們,而不是編譯它們。

我究竟做錯了什么?

我在 Mac 上運行它,並且 acm.jar 的目錄結構似乎是有效的:它包含一個acm/program目錄,其中包含ConsoleProgram.class ,這是TestConsole擴展的唯一類。

javac -classpath ".:acm.jar" TestConsole.java也不起作用。

javac -cp <jar you want to include>;<jar you want to include> <source.java> 

<jar you want to include>如果在同一個目錄下,只需要 jar 的名字就行,如果不是,指定完整或相對路徑

如果不止一個罐子,用,分開

替換; :unix

如果可能,請使用一些 IDE,例如 Eclipse。 我曾經花很多時間在類似的事情上,但在行業中,你幾乎不會以這種方式去做。

您是否在 Windows 機器上運行這些命令? 在 Windows 上,類路徑的元素由分號而不是冒號分隔。 所以:

javac -classpath .;acm.jar TestConsole.java

另一種可能: acm.jar的結構有誤。 內部的類文件是從聲明package acm.program文件編譯而來是package acm.program - 包結構還必須表示為目錄層次結構,因此acm.jar必須包含目錄acm ,並且在該子目錄中包含program TestConsole使用的類的實際類文件。

檢查清單:

  1. 您在 acm.jar 中的類顯示為:

    acm/程序/CLASSX.class

    acm/程序/CLASSY.class

    當用 jar tf acm.jar 傾析時

  2. 您正在導入它們,例如:

導入 acm.program.CLASSX ;

或者

導入 acm.program.* ;

無論誰試圖編譯並且在我掙扎了幾個小時后仍然遇到問題,我遵循上述所有答案仍然由於一個小問題而無法運行該程序。

毫無疑問的問題是每個包裹后的分號。 我不確定 Mac 或 Linux,但對於 Windows 命令提示符,情況就是這樣

javac -cp mysql-connector-java-8.0.12.jar; Testing.java

java -cp mysql-connector-java-8.0.12.jar; Testing

應該遵循案例編譯或運行。

落后很多年,但我在這種語法上苦苦掙扎,這對我來說可以添加所有 jar 文件並使用程序中的所有類編譯到主類

我的文件樹:存儲類 .java 文件 jars .jar 文件
圖像 .PNG 文件

命令行:

C:\\Store>javac -cp "jars/ " classes/ .java classes/storeMain.java

我只是為那些在成功編譯后仍在尋找相同問題的答案的人補充。

編譯時使用@Michael Borgwardt 上面建議的命令:

javac -classpath .;acm.jar TestConsole.java

為了執行,您還需要指定類路徑:

java -classpath .;acm.jar TestConsole

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM