簡體   English   中英

在 Java 中使用命令行編譯多個包

[英]Compiling multiple packages using the command line in Java

嗨,我一直在使用 IDE,但現在我需要從命令行運行和編譯。

問題是我有多個包,我試圖找到答案,但沒有任何效果。

所以我有

src/
  Support/ (.java files)
  Me/ (.java files) 
  Wrapers/ (.java files)  

你知道如何用 javac 編譯所有東西嗎?

這應該可以做到(可能需要通過-cp命令行開關添加額外的類路徑元素):

javac Support/*.java Me/*.java Wrapers/*.java

但是,如果您的構建過程變得更加復雜(並且會變得更加復雜!),您應該考慮使用Apache Ant進行構建自動化。

對於此類任務,您應該使用MavenAnt等構建工具。

在初始階段,當項目不是很復雜時,您可以使用以下行進行編譯,並使用適當的類路徑(如@Michael 建議的那樣):

javac Support/*.java Me/*.java Wrapers/*.java

javac -d compiled $(find src -name *.java)

真正的答案是 javac -d(要構建和放置類的地方)-sourcepath(根目錄下的包源)-cp(依賴項的類路徑,它可以再次是構建和保存類的類文件夾)full java 文件的限定名稱。

例如 javac -d classes -sourcepath src -cp classes src\\com\\test\\FirstSample.java

FirstSample.java 包含主要方法。 下面提到的包結構。

編譯前
家庭應用程序
--src
------com\\test\\FirstSample.java(使用 FirstPojo.java 的第一個樣本)
------com\\test\\FirstPojo.java
--類

編譯后
家庭應用程序
--src
------com\\test\\FirstSample.java(FirstSample.java 使用 FirstPojo.java)
------com\\test\\FirstPojo.java
--類
------com\\test\\FirstSample.class(FirstSample.class 使用 FirstPojo.class)
------com\\test\\FirstPojo.class

如果您真的只需要使用 javac 和標准 UNIX 命令,您可以這樣做:

find src -name \*.java -print0 | xargs -0 javac -d classes

在許多情況下,Ant 是矯枉過正的。 如果您在 Windows 中,只需使用 BAT 文件,如果您在 linux 中,則使用 shell 腳本(sh 文件)。 您可以創建一個包含所有 javac 命令的文本文件,並在您想要構建時運行該文件。

例如,我使用以下 bat 文件來構建我的應用程序之一:

@echo off
echo Building Shazaam...

del classes\com\aepryus\shazaam\*.* /q
del classes\com\aepryus\shazaam\engine\*.* /q
del classes\com\aepryus\shazaam\domain\*.* /q
del classes\com\aepryus\shazaam\persist\*.* /q
del classes\com\aepryus\shazaam\view\*.* /q
del classes\com\aepryus\shazaam\task\*.* /q
del classes\com\aepryus\shazaam\action\*.* /q
del classes\com\aepryus\shazaam\controller\*.* /q

javac src\com\aepryus\shazaam\*.java        -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar; -d classes
javac src\com\aepryus\shazaam\engine\*.java -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\domain\*.java -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\persist\*.java    -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\view\*.java   -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\task\*.java   -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\action\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\controller\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepRPC.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes

cd classes
jar cf ..\war\WEB-INF\lib\Shazaam.jar .
cd..

echo Complete
  1. 編譯運行下面的命令[它將所有類文件存儲在類文件夾中]

    javac -d classes Support/*.java Me/*.java Wrapers/*.java

**注意:應首先創建類文件夾

  1. 要運行 java 應用程序,請運行以下命令

    java -cp classes {mainfile_name}

將 mainfile_name 替換為您的主文件。

暫無
暫無

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

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