2010-03-15 127 views
3

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

我个人认为javac的应该是足够的智慧来处理

javac * 

时刚下包层次的根文件夹中。这个球场有什么东西吗?

编辑:源文件夹结构非常复杂,并且没有单个入口类,所以到目前为止提到的一些想法都不起作用。虽然谢谢!深层次地考虑9个层次的代码。

+3

如果他们不能使用Java,谁不只给他们已编译的版本? – skaffman 2010-03-15 23:37:23

回答

5

从代表包层次结构的基础上,假设你的入口点类被称为主,在一个叫做应用程序包的文件夹,

javac -classpath . app/Main.java 

应生成正确的类定义。编译器会查找依赖关系并编译需要的其他类。类文件将与其源文件在同一目录中。

如您所说,如果您有'多个条目'类,您必须至少标识依赖关系层次结构中的所有顶级类,它们可以列为javac的进一步参数,指定包当他们发生时。像这样,假设你还需要启动other.Entry

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

注意,你仍然要搞清楚,你的类都是独立的依赖性层次的上衣,无论您是创建一个Ant脚本,或者做这条路。

5

与Ant脚本与类路径的正确的库确实构建等为他们提供脚本还可以做其他任务,如建筑物的JAR等

这要求那人下载和安装蚂蚁,但这并不难。 (并且没有什么能够阻止你为他们提供一个合适的Ant发行版来安装它,或者甚至向他们发送一个具有Ant“预安装”副本的发行版ZIP文件)。

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

3

javac BaseProgram.java将从当前目录中编译BaseProgram.java,以及它在同一目录树中的源代码中可用的所有类。

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

2

你可以建立一个文件列出所有要编译的类(从javac的手册页中提取) -

实例 - 两个精氨酸文件 您可以创建两个参数文件 - 一个用于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 

(再从人的javac

或者你为什么不只是编译源到您的客户可以运行使用他们的JRE罐 - 尤其是考虑到他们是不是Java精明?