簡體   English   中英

如何在Java中設置和使用類,庫,包?

[英]How do I set up and use classes, libraries, packages in Java?

我對使用不是Java固有的外部類庫和API的想法還不陌生,我什至不知道我是否在用正確的術語詢問正確的問題。 所以,讓我解釋一下我在做什么。

我需要讀寫Excel文件。 我發現此頁面具有Java-Excel API。 我想安裝該API並將其用於我的Java本地實例( C:\\java\\ ),因此我可以在創建新程序時導入這些類(例如, import jxl.CellView )。 我有一個來自sourceforge的zip文件,但是之后,我就迷路了。

這些說明參考在Eclipse中進行設置。 我不喜歡Eclipse作為IDE的愛好者...所以我想知道如何“手動”進行操作。 我認為這將幫助我更好地理解它為何以未來的方式運行。

因此,我的下一條指令是……“要在Java程序中使用此庫,請將lib jxl.jar添加到項目中的類路徑中。請參閱在Eclipse中更改類路徑。” 是否僅將zip文件解壓縮到C:\\java 這就是我上課的意思嗎? 從這里開始需要執行哪些步驟,以確保可以根據需要導入適當的類?

此外,這些類是否與applet捆綁在一起? 當我編譯Java程序時,即使文件接收者在運行該文件的計算機上未安裝此特定軟件包,也可以運行該文件?

有人可以給我一些看法嗎?

我喜歡將所有第三方庫都放在c:\\ java \\ lib中。 這樣,我可以將它們與c:\\ java中的JRE和JDK分開。 這不是嚴格必要的,但要整潔很好。 以下是一些有關使用您感興趣的庫的說明。

jexcelapi_2_6_12.zip壓縮到c:\\java\\lib\\

這應該意味着以下文件現在存在: C:\\java\\lib\\jexcelapi\\jxl.jar

現在,將您的代碼放在c:\\java\\work中,以使其分開。 使用文本編輯器創建文件c:\\java\\work\\MyClass.java

import jxl.CellView;
public class MyClass {
    public static void main(String[] args) {
        System.out.println("I can access " + CellView.class);
    }
}

打開命令提示符,並將目錄更改為c:\\ java \\ work。

cd /dc:\\java\\work

現在編譯該類:

javac -classpath ..\\lib\\jexcelapi\\jxl.jar MyClass.java

如果沒有錯誤,目錄現在應該包含一個新文件MyClass.class ,它是您的已編譯程序。

如果看到錯誤: 'javac'不被識別為內部或外部命令,可操作程序或批處理文件。 那么您可以指定javac.exe的完整路徑。 以下示例假定您在c:\\ java \\ jdk1.6.0_37中有一個JDK,在您的系統上它可能是正確的,也可能不是。

c:\\java\\jdk1.6.0_37\\bin\\javac -classpath ..\\lib\\jexcelapi\\jxl.jar MyClass.java

運行已編譯的程序:

C:\\java\\work>java -classpath ..\\lib\\jexcelapi\\jxl.jar;. MyClass

輸出:
我可以訪問類jxl.CellView

注意java類路徑末尾的分號和點。 這會將當前目錄添加到類路徑,以便java可以找到MyClass.class。 對於javac這不是必需的。

PATH應該只包含目錄不同,java的CLASSPATH (或-classpath )可以同時包含文件和目錄。 當文件出現在類路徑中時,它應該是一個JAR。 由於JAR只是zip文件,因此有時您還會在類路徑中看到ZIP文件。 這是非標准的,但可以。 Java將.zip文件視為.jar。 如果需要在程序中添加第二個庫,請使用分號(Windows)或冒號(* nix)分隔文件。

javac -classpath ..\\lib\\jexcelapi\\jxl.jar;..\\lib\\lib-2.0\\lib-2.0.jar MyClass.java

有時,庫包含多個jar文件。 在這種情況下,您需要將作為庫一部分的每個JAR文件添加到類路徑。 再次,用分號分隔它們。 如果這看起來很乏味,您將開始理解為什么人們喜歡使用IDE或Ant與Java而不是命令行命令一起使用。

還有很多事情要學習,例如使用軟件包,使用環境變量CLASSPATH設置類路徑而不是使用-classpath命令行參數,將JDK bin目錄添加到PATH,將多個條目添加到類路徑,創建shell使用IDE進行開發,使用Maven / Ant進行構建,制作自己的JAR的腳本,使重建和重新運行程序變得更加容易,要學習的東西不勝枚舉。 這篇文章並不是要指示最佳實踐,而是讓您快速入門和運行。 請遵循Internet上發布的Oracle文檔和其他最佳實踐,以不斷改善Java開發環境。

此外,這些類是否與applet捆綁在一起?
如果您的程序最終將成為一個applet,那么是的,您將需要將jxl.jar與您的程序一起分發-人們不會在計算機上安裝它,也不想自己下載它。 我不會在這里描述如何制作Applet。 網絡上有很多資源。 Google幫您解決這個問題,並針對您遇到的問題提出更具體的問題。

當我編譯Java程序時,即使文件接收者在運行該文件的計算機上未安裝此特定軟件包,也可以運行該文件?
jxl庫不會編譯到您的程序中。 您將需要以某種方式將jxl庫與程序一起交付給用戶。 您可能應該將程序捆綁成一個JAR,因為大多數非平凡的程序都包含一個以上的Java類,這意味着您的程序將包含多個.class文件。 有很多方法可以解決此問題。 花一些時間閱讀有關如何創建applet的資源,然后再回到Stackoverflow並提出更具體的問題。

轉到命令行。

輸入:

echo %CLASSPATH%

它應該返回目錄列表。 您可以將要導入的庫放入其中任何一個。

閱讀: http : //docs.oracle.com/javase/tutorial/essential/environment/paths.html

classpath是目錄和.jar文件的列表,Java虛擬機將從中加載所需的類。 默認情況下,某些目錄和jar位於其中(基本上是Java安裝隨附的庫),其他目錄和jar必須由用戶指定。

一種指定其他位置的方法是CLASSPATH環境變量。 如果有多個條目,則用平台的路徑分隔符將其分隔(Windows上的分號,對於其他大多數系統則使用冒號)。

另一種方法是啟動編譯器或Java虛擬機時的-classpath選項。

在您的情況下,將jxl.jar文件放在某個位置(例如/some/path/jxl.jar ),然后以如下方式調用編譯器(假設MyClass在默認包中並存儲在當前目錄中)

javac -classpath /some/path/jxl.jar:. MyClass.java

並運行它使用

java -classpath /some/path/jxl.jar:. MyClass

在zip文件中,如果您有jxl.jar,則必須像外部庫一樣將此jxl.jar包含在您的proyect中。 例如在netbeans中:

http://jsumon.wordpress.com/2009/11/24/adding-external-jar-or-library-to-netbeans-java-project/

和蝕:

http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29

暫無
暫無

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

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