我正在寻找用 Java 编译一个应用程序,它由一定数量的包中的不同数量的 java 类组成。在命令行中,我可以切换到包含根包的文件夹并键入:
javac rootpackage/subpackage/*.java
或者
javac rootpackage/*/*.java
编译我的根包的所有主要子包中的所有 java 类。
但是,我希望能够在 Java 应用程序中执行此操作。(我们的想法是,我们向学生提供一个包含单元测试的应用程序。单元测试需要针对他们的代码运行,然后应用程序创建一个 JAR 文件,其中包含他们的源文件,这些文件已被测试结果“加水印”。所有这工作正常,但我们想确保测试的类文件是从提交的源文件创建的,因此以编程方式编译 java 源的想法)。
问题在于每个学生都将他们的根包存储在任意位置,我似乎无法将文件的位置传递给 JavaCompiler (javax.tools)。
是否有可能,如果是这样,有人可以就如何正确编译任意放置的根包提供一些提示。
干杯
理查德
更多信息:
学生有一个文件夹结构:
/home/student/work/java/myproject/
其中包含根包。他们启动应用程序(可能存储在此文件夹中 - 因此没有问题 - 但很可能存储在其他地方),要求他们提供包含根包的文件夹。进入后,学生点击创建 JAR 按钮,编译包中的文件,对新编译的文件运行测试,然后创建 JAR。
在思考这个问题的同时,解决方案可能是告诉学生将我们的“create JAR”应用程序安装在包含他们的根包的文件夹中。