简单的命令行Java编译
因此,我必须将一个java项目发送给我们公司以外没有java经验的人,他们需要编译它。 有没有一种简单的方法在Windows命令行上执行它,不需要写出文件列表?
我个人认为javac应该足够聪明才能处理
javac *
当在包层次结构的根目录下的文件夹中时。 这个棒球场有什么吗?
编辑:源文件夹结构很复杂,并且没有单一的入门类,所以到目前为止提到的一些想法是行不通的。 谢谢! 在许多级别上使用代码深入了解9级。
从代表包层次结构基础的文件夹中,假设您的入口点类在名为app的包中称为Main,
javac -classpath . app/Main.java
应该生成正确的类定义。 编译器将查找依赖项并编译所需的任何其他类。 类文件将与其源文件显示在同一目录中。
如果,正如您所说,您有“多个条目”类,则必须至少从依赖关系层次结构中识别所有这些顶级类,这些类可以作为javac的进一步参数列出,指定包发生时。 像这样,假设你还需要从other.Entry开始
javac -classpath . app/Main.java other/Entry.java
请注意,您仍然需要弄清楚哪些类是独立依赖层次结构的顶层,无论是创建ant脚本还是以这种方式执行。
为它们提供一个Ant脚本,该脚本使用类路径上的正确库进行构建等。该脚本还可以执行其他任务,例如构建JAR等。
这要求该人下载并安装Ant,但这并不难。 (并且没有什么可以阻止你为它们提供适当的Ant发行版来安装。甚至还可以向它们发送一个发行版的ZIP文件,它在树中有“预装”的Ant副本。)
提供Ant脚本意味着您可以避免它们陷入Java新手陷阱,例如忘记设置类路径,位于错误的目录中,忘记重新编译相关文件等等。 此外,它更“专业”。
javac BaseProgram.java
将从当前目录编译BaseProgram.java,并在同一目录树中编译它在源代码中可用的所有引用的类。
如果BaseProgram引用Class1和Class2,并且它们在同一目录中的Class1.java和Class2.java中可用,那么它们也将被编译。 同样,如果它们在一个包中,并且包目录可用,它们将被编译。
您可以构建一个文件,列出您要编译的所有类(从javac手册页中提取) –
示例 – 两个Arg文件您可以创建两个参数文件 – 一个用于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
(再次来自man javac )
或者为什么不将源代码编译成一个客户可以使用他们的JRE运行的jar – 特别是考虑到他们不精通Java?
一个简单的方法是使用:
javac *.java.