【问题标题】:Javac : ignoring "should be declared in a file named..."Javac:忽略“应该在名为...的文件中声明”
【发布时间】:2013-07-08 00:33:53
【问题描述】:

我正在使用编译器 API (javax.tools.JavaCompiler) 中的工具来动态生成 Java 字节码。我构建源代码并使用 API 编译它,然后通过反射使用它。

只要我只尝试生成的非公共类就可以了。如果这样做,我会得到一个“MyClass 类是公共的,应该在名为 MyClass.java 的文件中声明”,这是完全正常的,它不是从 Java 文件编译的。

我正在寻找绕过此错误的方法,在 Java 选项和 API 中都没有找到。

【问题讨论】:

    标签: api java javac java-compiler-api


    【解决方案1】:

    查看这篇文章:Create class from string

    对我来说,使用“string:///”解决这个问题。

    正如这里所描述的http://www.javablogging.com/dynamic-in-memory-compilation/

    【讨论】:

    • 好吧,我尝试重新运行我的生成代码......而且效果很好。我不确切知道我在编译库中做了什么更改,但我无法重现此错误。无论如何,您的链接很棒(与第二个类似)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2020-07-05
    • 2013-08-21
    相关资源
    最近更新 更多