使用 JSR 199 编译器 API 编译目录树中的一组 Java 文件

发布于 2024-08-07 11:22:07 字数 303 浏览 7 评论 0原文

我正在尝试使用编译器 API 编译许多文件。

假设我有一个目录结构

<前><代码>.../程序 +/组织 +/富 |+ Main.java +/栏 + 工具.java

有没有办法发现所有 Java 文件并使其编译所有内容,而无需递归到所有目录并查找所有 *.java 文件?

编辑:我想做的是编译我在某个目录树中获得的所有类。这些类是相互独立的。然后我加载类并实例化这些类的一些对象并调用方法。没有一个类需要有 main.

I'm trying to compile many files using the Compiler API.

Say I have a directory structure

.../program
   +/org
    +/foo
    |+ Main.java
    +/bar
     + Tools.java

Is there any way to discover all the Java files and make it compiler everything without resorting to recursing into all the directories and finding all the *.java files?

EDIT: What I'm trying to do is compile all the classes that I get in some directory tree. These classes are independent of each other. Then I load the classes and instantiate some objects of these classes and call methods. None of the classes need to have main.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挖个坑埋了你 2024-08-14 11:22:07

javax.tools.JavaFileManager 类有一个 list() 方法应该解决方法:

Iterable<JavaFileObject> list(JavaFileManager.Location location,
                              String packageName,
                              Set<JavaFileObject.Kind> kinds,
                              boolean recurse)
                              throws IOException

使用 recurse 参数包含“子包”,然后迭代返回的 JavaFileObject

The javax.tools.JavaFileManager class has a list() method that should do the trick:

Iterable<JavaFileObject> list(JavaFileManager.Location location,
                              String packageName,
                              Set<JavaFileObject.Kind> kinds,
                              boolean recurse)
                              throws IOException

Use the recurse parameter to include "subpackages" and then just iterate over the returned JavaFileObject.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文