簡體   English   中英

Java:如何從包中編譯可運行的jar?

[英]Java: How to compile a runnable jar from packages?

我的Java應用程序具有類似於以下的包結構:

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

如何將這些目錄中的Java文件編譯到可運行的jar中? 我需要將所需的庫打包到生成的JAR(jdbc)中。

我一直在Eclipse中完成這些操作,但是現在我需要為幾個人提供一種無需使用eclipse即可編譯存儲庫的方法,並且我正在考慮制作一個makefile或調用必要的javac模式的腳本。

看一下螞蟻。 這是一個相對簡單的構建工具,易於理解,並提供滿足您要求的所有內容。 這是一個快速入門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進程哪個類包含“ main”方法。 是開始學習清單的好地方。

作為產生真正混亂的Ant構建文件的替代方法,您可以右鍵單擊Eclipse項目並選擇“導出...”,然后選擇“常規> Ant構建文件”。

無論如何,那應該讓您入門。 您可以在遇到問題時提出更具體的問題。

首先,考慮將Ant用於此類任務。

但是,由於您要求手動進行操作,因此需要首先創建一個清單文件 ,如下所示:

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

用您的庫替換Class-Path的內容,並用您的主類的完全限定名替換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

考慮使用Ant來執行此操作。 http://ant.apache.org/

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

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

暫無
暫無

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

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