java - 无法使用 JavaCompiler 编译 @Entity 等注释

标签 java java-compiler-api javacompiler

我正在使用 JavaCompiler 在运行时编译 Java 代码。在大多数情况下,它运作良好。编译过程中没有出现异常,运行良好。我需要它来编译带有 @Entity 注释的类。但是,我不断收到“第 3 行错误 - 需要类、接口(interface)或枚举”。

这是我的实体类:

@Entity
public class Contact {
    @Getter @Setter
    private String FirstName;

    @Getter @Setter
    private String LastName;
}

这就是我使用 JavaCompiler 编译它的方式:

List<String> optionList = new ArrayList<String>();
            optionList.add("-classpath");
            optionList.add(System.getProperty("java.class.path"));

Iterable<? extends JavaFileObject> compilationUnit
                    = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(newClassFile));
JavaCompiler.CompilationTask task = compiler.getTask(
                    null,
                    fileManager,
                    diagnostics,
                    optionList,
                    null,
                    compilationUnit);

最佳答案

已解决。看起来我只需要在构建时添加持久性 api jar。

关于java - 无法使用 JavaCompiler 编译 @Entity 等注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55985111/

相关文章:

java - ant java jar 没有主类

java - 按计划运行 "jmap -histo:live"来触发垃圾回收是否安全(或者是个好主意)?

java - 无法从 java md5 哈希中获得与 python md5 哈希相同的结果

java - 找不到或加载主类 - 在异常情况下

java - 如何运行JavaCompiler编译的代码?

java - JodaTime 向下舍入到最接近的一刻钟

java - android studio 与 Java 编译器错误 : string too large to encode using UTF-8 written instead as 'STRING_TOO_LARGE'

JavaCompiler API - 在 tomcat 中运行时编译速度慢

java - 如何在 IntelliJ IDEA 中运行 AnnotationProcessor?