2012-06-11 34 views
0

我一直對StackOverflow配置單元的思想印象深刻,並希望您能指出我在這裏的正確方向。Java:如何集成其他軟件

我已經學習了一些Java編程課程,並瞭解如何編寫相當複雜的Java程序。但是,我從來沒有學過如何將別人的軟件整合到我自己的程序中。

對於新項目,我想將part-pf-speech taggerchunker集成到我的代碼中,但不知道如何「加載」這些程序(如果加載是正確的術語)。

我當然不是在尋找分步說明,而是尋找如何解決這類問題的指南。如果有人能讓我開始朝正確的方向發展,我將不勝感激。

感謝, 亞當

回答

3

它看起來像你想要使用的外部自己在Java中。這意味着你很幸運 - 你可以使用純Java語言功能來使其工作。

有兩件事情是:

1)直接與外部庫,互動都必須依賴進口,否則你就必須引用它們使用完全合格的類名源文件。 導入是通過import聲明完成的。這些聲明類聲明之前,應立即出現,就像這樣:

import foo.*;  //import all classes from the package foo 
import foo.bar.Baz; //import only the Baz class from the package foo.bar 

public class MyClass { 
    Baz myBaz = null;    //declare a member of type Baz class from package foo.bar 
    foo.bar.BazBaz myBazBaz = null; //by using a fully qualified classname, I didn't need to write an import statement for foo.bar.BazBaz 
} 

2)當你編譯你的源代碼,Java編譯器需要知道去哪裏找你在你的源引用的類。這是通過類路徑完成的。

classpath可以是.class文件(編譯的java類)的列表,也可以是.jar文件(java歸檔文件)和.zip文件。通常,一個項目將把所需的所有類打包到一個或多個.jar文件中。

這些類的位置與您在java代碼中與它們進行交互的方式沒有關係。編譯器的工作是讀取這些jar和類文件,並找到您在代碼中引用的類。如果編譯器找不到你指的類,你會得到一個編譯時錯誤,你不能編譯你的程序。

您可以將類路徑指定爲java編譯器命令行的參數(http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html#options)。但是,這非常迅速地變得笨拙。

相反,您應該使用像ant這樣的構建工具爲您完成這項工作。最好的入門方式是閱讀本頁:http://ant.apache.org/manual/index.html

從那裏,轉到「使用apache ant」,然後到「編寫一個簡單的構建文件」的整體,他們解釋瞭如何在那裏設置類路徑。

+0

謝謝羅蘭!這看起來不錯。現在我需要花時間來吸收它並實際執行它。 –

0

好典型Java庫分發作爲一個JAR文件。然後在你的程序中,你可以簡單地導入新的包並使用提供的API。

當您編譯並運行時,您必須確保庫包含在您的類路徑中,以便他們知道在哪裏查找軟件包。

2

編譯時您需要在您的classpath上安裝它們的類,並在運行程序時再次使用它們。

看來這些項目分發src和jar。抓住罐子,並使它們在您的classpath上可用。一旦你的類路徑設置完成,你將需要import你正在使用的任何特定的類/包。

請參閱this關於管理classpath的教程。它涵蓋了命令行編譯/執行的基礎知識;如果您使用特定的編譯系統或IDE,則說明會有所不同。

另請注意第二個鏈接中提供數據文件的具體說明。爲此,他們也使用classpath

+0

非常感謝@ pb2q。我需要花一些時間來吸收這一切,但看起來真的很有幫助。 –

1

配置您的構建路徑以包含.jar文件。

如果您使用的是Eclipse,您可以右鍵單擊Project Explorer中的項目文件,然後選擇Configure Build Path。最後,添加外部檔案(您下載的檔案)。現在,這些功能將在您的程序中隨時可用。

或者更強大的方法是在eclipse項目中創建一個名爲「lib」的文件夾,並在其中包含所有jar文件。然後從Configure Build Path窗口中選擇lib文件夾中的那些jar文件。這使得與其他程序員共享項目變得很容易,無論他們在Windows還是Linux上(當添加外部jar時,它會保存絕對路徑,因此如果C:\上的某些內容不會在別人的PC上找到)還提供了依賴性源代碼管理器上的庫,如GIT,CVS和SVN。

相關問題