2010-03-27 25 views
1

我的Java應用程序得到了一個類似的封裝結構:Java:如何從軟件包編譯可運行jar?

src/com/name/app 
src/com/name/app/do 
src/com/name/utils/db 

我怎麼會去編這些目錄中的Java文件中運行的JAR?我需要將所需的庫打包到生成的JAR(jdbc)中。

我一直在Eclipse中完成這些工作,但現在我需要提供一些編譯版本庫的方法,而無需使用eclipse,並且我正在考慮創建一個makefile或一個調用必要的腳本javac模式。

回答

4

首先,考慮使用Ant進行此類任務。

不過既然你問了一個手動過程,你需要首先創建一個manifest file,像這樣:

Manifest-Version: 1.0 
Created-By: 1.6.0 (Sun Microsystems Inc.) 
Class-Path: lib/jdbc.jar lib/otherlib.jar 
Main-Class: com.name.app.MainClass 

與庫替換類路徑的內容,的Main-Class與您的主類的完全限定名稱。

然後,你需要生成實際的.jar,使用以下命令:

jar cfm app.jar MANIFEST.MF src/com/name/app/*.class src/com/name/app/do/*.class 

MANIFEST.MF就是前面提到的清單文件,剩下的是文件夾在您的.java類別在於。

最後,要運行您的應用程序,您只需執行:java -jar app.jar

+0

非常感謝。這正是我正在尋找的,但考慮到你,Rob和其他響應者已經建議Ant,我會看看我是否可以在本週末設置它。 – John 2010-03-27 10:59:28

+0

是的,它更簡單,並且與平臺無關:)。 – 2010-03-27 12:13:43

5

看看Ant。這是一個相對簡單的構建工具,可以理解並提供滿足您需求的所有內容。這裏有一個快速骨架的build.xml讓你開始:

<project name="my_app_name" default="jar"> 

    <target name="compile"> 
    <javac srcdir="src" destdir="bin"> 
     <classpath> 
      <fileset dir="lib"> 
       <include name="**/*.jar" /> 
      </fileset> 
     </classpath> 
    </javac> 
    </target> 

    <target name="jar"> 
    <jar manifest="manifest_file" destfile="dist/my_app_name.jar"> 
     <fileset dir="bin" /> 
     <fileset dir="lib" /> 
    </jar> 
    </target> 

你需要創建一個清單文件,該文件會告訴其類持有「主」方法的Java程序。 Here是開始學習艙單的好地方。

作爲生成非常混亂的Ant構建文件的替代方法,您可以右鍵單擊Eclipse項目並選擇「導出...」,然後選擇「常規」>「Ant構建文件」。

無論如何,這應該讓你開始。在遇到它們時,您可以提出更具體的問題。

+0

謝謝!我一定會看看Ant。 – John 2010-03-27 10:57:54

0

我建議您使用Apache Ant來實現您的構建腳本。

如果實施正確,Ant易於使用,構建腳本可以在任何可以安裝JDK的平臺上運行。事實上,通過一些工作,您甚至可以設置項目,以便用戶甚至不需要下載/安裝Ant。 (提示:將Ant JAR文件和包裝腳本添加到您的項目發行版中)