简单的命令行Java编译

简单的命令行Java编译,java,command-line,compilation,Java,Command Line,Compilation,所以我必须向我们公司以外没有java经验的人发送一个java项目,他们需要编译它。有没有一种简单的方法可以在windows命令行上执行,而不需要写出文件列表 我个人认为javac应该足够聪明来处理 javac * 当位于包层次结构根目录下的文件夹中时。这个球场里有什么东西吗 编辑:源文件夹结构很复杂,并且没有单一的条目类,所以到目前为止提到的一些想法不会起作用。谢谢你!考虑9个层次,在多个层次上编写代码。为他们提供一个Ant脚本,该脚本使用类路径上的正确库进行构建,等等。该脚本还可以执行其他任

所以我必须向我们公司以外没有java经验的人发送一个java项目,他们需要编译它。有没有一种简单的方法可以在windows命令行上执行,而不需要写出文件列表

我个人认为javac应该足够聪明来处理

javac *
当位于包层次结构根目录下的文件夹中时。这个球场里有什么东西吗


编辑:源文件夹结构很复杂,并且没有单一的条目类,所以到目前为止提到的一些想法不会起作用。谢谢你!考虑9个层次,在多个层次上编写代码。

为他们提供一个Ant脚本,该脚本使用类路径上的正确库进行构建,等等。该脚本还可以执行其他任务,例如构建JAR等

这需要那个人下载并安装Ant,但这并不难。(没有什么可以阻止你为他们提供一个合适的Ant发行版来安装,甚至给他们发送一个在目录树中有Ant“preinstalled”副本的发行版ZIP文件。)


提供Ant脚本意味着您可以避免它们落入Java新手陷阱,例如忘记设置类路径、位于错误的目录中、忘记重新编译依赖文件等等。另外,它更“专业”。

javacbaseprogram.java
将从当前目录及其引用的源代码中可用的所有类在同一目录树中编译BaseProgram.java


如果BaseProgram引用Class1和Class2,并且它们在同一目录中的Class1.java和Class2.java中可用,那么它们也将被编译。同样,如果它们在包中,并且包目录可用,则将对它们进行编译。

您可以构建一个文件,列出要编译的所有类(摘自javac手册页)-

示例-两个Arg文件 您可以创建两个参数文件——一个用于javac选项,另一个用于 另一个用于源文件- 名称:(请注意,以下列表没有行延续 字符。)

或者您可以在命令行上使用*.java,例如

javac greetings/*.java
(再次摘自man javac)


或者,你为什么不把源代码编译成一个jar,让你的客户可以使用他们的JRE运行——特别是考虑到他们不懂Java?

从表示包层次结构基础的文件夹中,假设你的入口点类称为Main,在一个名为app的包中

javac -classpath . app/Main.java
应该生成正确的类定义。编译器将找出依赖项并编译任何其他需要的类。类文件将显示在与其源文件相同的目录中

如您所说,如果您有“多个条目”类,那么您必须至少从依赖关系层次结构中标识所有这些顶级类,这些类可以作为javac的进一步参数列出,并在出现时指定包。这样,假设您还需要从其他.Entry开始

javac -classpath . app/Main.java other/Entry.java 

请注意,无论您是在创建ant脚本还是以这种方式创建ant脚本,您仍然需要确定哪些类是独立依赖层次结构的顶层。

一个简单的方法是使用:

javac *.java.

如果他们不能使用Java,谁不给他们已经编译好的版本呢?
javac *.java.