我在 Netbeans 7 中有一个 Java EE 6 项目,当我在 IDE 中编译并启动它时,该项目运行良好。但是,当我清理并构建项目时,我得到了
java.lang.RuntimeException
:javax.annotation.processing.FilerException
: Attempt to recreate a file for type {myclass
}
(其中 myclass
始终是 JPA 实体类)。
如果我更改代码中的某些内容,它会更改哪个实体类。
我不知道什么可能会导致此错误 - 任何人都可以提供查看内容的想法。
我使用的唯一额外库是 Velocity。
更新:我在同一个数据库上使用两个持久性单元,一个是“正常”持久性单元,一个是非事务性持久性单元。我用非事务性的方式将内容记录到数据库中;每次插入日志事件后都会提交一次。
当我更改它并仅使用一个“正常”PU 时,该项目可以正常编译。难道这两个PU干扰了eclipselink所做的一些优化?
这是堆栈跟踪的开头:
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file for type de.guj.contenthub.ftdts.entity.AgofEntry_
at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:407)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:625)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:554)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:699)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:981)
at com.sun.tools.
最佳答案
拥有两个使用相同实体类的持久性单元似乎确实是问题所在。
就我而言,我有一个用于查询数据的单元,另一个用于身份验证。用于身份验证的不需要了解我的实体类,因此在 Netbeans 中我必须取消选中“在“MyWebServiceProject”模块中包含所有实体类”。
或者添加:
<exclude-unlisted-classes>true</exclude-unlisted-classes>
到该持久性单元的 web.xml 文件。
关于netbeans - 构建 Java EE 6 项目时出现 FilerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8938889/