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