2010-03-15 126 views
3

所以我必須發送一個java項目給我們公司以外沒有java經驗的人,他們需要編譯它。是否有一種簡單的方法可以在Windows命令行上執行,而不需要寫出文件列表?簡單的命令行Java編譯

我個人認爲javac的應該是足夠的智慧來處理

javac * 

時剛下包層次的根文件夾中。這個球場有什麼東西嗎?

編輯:源文件夾結構非常複雜,並且沒有單個入口類,所以到目前爲止提到的一些想法都不起作用。雖然謝謝!深層次地考慮9個層次的代碼。

+3

如果他們不能使用Java,誰不只給他們已編譯的版本? – skaffman 2010-03-15 23:37:23

回答

5

從代表包層次結構的基礎上,假設你的入口點類被稱爲主,在一個叫做應用程序包的文件夾,

javac -classpath . app/Main.java 

應生成正確的類定義。編譯器會查找依賴關係並編譯需要的其他類。類文件將與其源文件在同一目錄中。

如您所說,如果您有'多個條目'類,您必須至少標識依賴關係層次結構中的所有頂級類,它們可以列爲javac的進一步參數,指定包當他們發生時。像這樣,假設你還需要啓動other.Entry

javac -classpath . app/Main.java other/Entry.java 

注意,你仍然要搞清楚,你的類都是獨立的依賴性層次的上衣,無論您是創建一個Ant腳本,或者做這條路。

5

與Ant腳本與類路徑的正確的庫確實構建等爲他們提供腳本還可以做其他任務,如建築物的JAR等

這要求那人下載和安裝螞蟻,但這並不難。 (並且沒有什麼能夠阻止你爲他們提供一個合適的Ant發行版來安裝它,或者甚至向他們發送一個具有Ant「預安裝」副本的發行版ZIP文件)。

提供一個Ant腳本表示避免它們陷入Java新手陷阱中,例如忘記設置類路徑,位於錯誤的目錄中,忘記重新編譯依賴文件等等。另外,它更「專業」。

3

javac BaseProgram.java將從當前目錄中編譯BaseProgram.java,以及它在同一目錄樹中的源代碼中可用的所有類。

如果BaseProgram引用了Class1和Class2,並且它們在同一目錄中的Class1.java和Class2.java中可用,那麼它們也將被編譯。同樣,如果它們在一個包中,並且包目錄可用,它們將被編譯。

2

你可以建立一個文件列出所有要編譯的類(從javac的手冊頁中提取) -

實例 - 兩個精氨酸文件 您可以創建兩個參數文件 - 一個用於javac的選項和 其他的源文件 - 名稱:(請注意下面的列表中沒有續行 字符)。

Create a file named options containing: 

      -d classes 
      -g 
      -sourcepath /java/pubs/ws/1.3/src/share/classes 

    Create a file named classes containing: 

      MyClass1.java 
      MyClass2.java 
      MyClass3.java 

    You would then run javac with: 

      % javac @options @classes 

或者你可以在命令行上使用* .java,例如

javac greetings/*.java 

(再從人的javac

或者你爲什麼不只是編譯源到您的客戶可以運行使用他們的JRE罐 - 尤其是考慮到他們是不是Java精明?