简单的命令行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.