2013-08-28 41 views
0

我想從命令行編譯一個Java項目。該項目包含不同包中的類文件。如果我指定每個包的每個java文件,該程序編譯並運行正常。這裏是我的目錄結構:自動編譯多個java包

toplevel/ 
    mainFile.java 
    level1/ (Contains fileA.java) 

現在,如果我這樣做javac -classpath ./toplevel toplevel/mainFile.java toplevel/level1/fileA.java,編譯沒有問題,我可以用java toplevel/mainFile運行它。 現在,如果創建1級稱爲「(第二級)」的新文件夾,並創建一個「B」級裏面,新的目錄結構變爲:

toplevel/ 
    mainFile.java 
    level1/ (Contains fileA.java) 
     level2/ (Contains fileB.java) 

若要編譯此我必須做的: javac -classpath ./toplevel toplevel/mainFile.java toplevel/level1/fileA.java toplevel/level1/level2/fileB.java這是越來越荒謬。是否有遞歸編譯每個包和其中的文件的指令?

+1

爲什麼不使用像ant或maven這樣的構建工具?這對於那些將是微不足道的。 – rocketboy

+1

可能重複[javac選項遞歸編譯](http://stackoverflow.com/questions/6623161/javac-option-to-compile-recursively) –

+0

@rocketboy我不想使用任何構建工具,這需要學習一些額外的東西。用戶必須能夠從命令行運行它 – df611

回答

1

您試過-sourcepath標誌。從Oracle documentation

-sourcepath源路徑 指定要搜索的類或接口定義的源代碼路徑。與用戶類路徑一樣,源路徑條目以分號(;)分隔,可以是目錄,JAR歸檔文件或ZIP歸檔文件。如果使用包,則目錄或歸檔中的本地路徑名必須反映包名。