在 Java 中使用命令行编译多个包
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3512603/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Compiling multiple packages using the command line in Java
提问by Altober
Hi i have been using an IDE but now I need to run and compile from the command line.
嗨,我一直在使用 IDE,但现在我需要从命令行运行和编译。
The problem is that I have multiple packages and I have tried to find the answer but nothing has worked.
问题是我有多个包,我试图找到答案,但没有任何效果。
So I have
所以我有
src/
Support/ (.java files)
Me/ (.java files)
Wrapers/ (.java files)
Do you know how to compile everything with javac?
你知道如何用 javac 编译所有东西吗?
采纳答案by Michael Borgwardt
This should do it (may require additional classpath elements via the -cp
command line switch):
这应该这样做(可能需要通过-cp
命令行开关添加额外的类路径元素):
javac Support/*.java Me/*.java Wrapers/*.java
But if your build process gets more complex (and it will!), you should look into using Apache Antfor build automation.
但是,如果您的构建过程变得更加复杂(并且会变得更加复杂!),您应该考虑使用Apache Ant进行构建自动化。
回答by pavanlimo
You should use build tools like Mavenor Antfor such tasks.
In the initial stages, when the project is not very complex you can use the following line to compile, with appropriate classpath in place(as suggested by @Michael):
在初始阶段,当项目不是很复杂时,您可以使用以下行进行编译,并使用适当的类路径(如@Michael 建议的那样):
javac Support/*.java Me/*.java Wrapers/*.java
javac Support/*.java Me/*.java Wrapers/*.java
回答by Ken Bloom
javac -d compiled $(find src -name *.java)
回答by Moritz
If you really need to just use javac and standard UNIX commands you could to this:
如果您真的只需要使用 javac 和标准 UNIX 命令,您可以这样做:
find src -name \*.java -print0 | xargs -0 javac -d classes
回答by aepryus
In many cases Ant is overkill. Just use a BAT file if you are in windows or a shell script (sh file) if you are in linux. You can create a text file which includes all your javac commands and just run that file when you want to build.
在许多情况下,Ant 是矫枉过正的。如果您在 Windows 中,只需使用 BAT 文件,如果您在 linux 中,则使用 shell 脚本(sh 文件)。您可以创建一个包含所有 javac 命令的文本文件,并在您想要构建时运行该文件。
For example, I use the following bat file to build one of my apps:
例如,我使用以下 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
回答by pratyush
The real answer is javac -d (places where classes to be built and placed) -sourcepath (source of the package at the root) -cp (classpath of the dependencies which can again be classes folder where the classes are build and kept) full qualified name of the java file.
真正的答案是 javac -d(要构建和放置类的地方)-sourcepath(根目录下的包源)-cp(依赖项的类路径,它可以再次是构建和保存类的类文件夹)完整java 文件的限定名称。
Ex javac -d classes -sourcepath src -cp classes src\com\test\FirstSample.java
例如 javac -d classes -sourcepath src -cp classes src\com\test\FirstSample.java
The FirstSample.java contains the main method. Pacjage structure mentioned below.
FirstSample.java 包含主要方法。下面提到的包结构。
Before compiling
HomeApp
--src
------com\test\FirstSample.java (First Sample using the FirstPojo.java)
------com\test\FirstPojo.java
--classes
编译
HomeApp
之前
--src
------com\test\FirstSample.java (First Sample using the FirstPojo.java)
------com\test\FirstPojo.java
--classes
After compiling
HomeApp
--src
------com\test\FirstSample.java (FirstSample.java using the FirstPojo.java)
------com\test\FirstPojo.java
--classes
------com\test\FirstSample.class (FirstSample.class using the FirstPojo.class)
------com\test\FirstPojo.class
编译
HomeApp
--src
------com\test\FirstSample.java (FirstSample.java 使用 FirstPojo.java)
------com\test\FirstPojo.java
--classes
----- -com\test\FirstSample.class(FirstSample.class 使用 FirstPojo.class)
------com\test\FirstPojo.class