每次运行代码时,都会出现以下错误:
java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file for type domein.ClubLes_
[javac] at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:407)
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:964)
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:881)
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.access$2100(JavacProcessingEnvironment.java:110)
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1202)
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1311)
[javac] at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1250)
[javac] at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:928)
[javac] at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:306)
[javac] at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:165)
[javac] at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)
[javac] at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)
[javac] Caused by: javax.annotation.processing.FilerException: Attempt to recreate a file for type domein.ClubLes_
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacFiler.checkNameAndExistence(JavacFiler.java:727)
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacFiler.createSourceOrClassFile(JavacFiler.java:489)
[javac] at jdk.compiler/com.sun.tools.javac.processing.JavacFiler.createSourceFile(JavacFiler.java:426)
[javac] at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.generateCanonicalModelClass(CanonicalModelProcessor.java:98)
[javac] at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.generateCanonicalModelClasses(CanonicalModelProcessor.java:226)
[javac] at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:403)
[javac] ... 11 more
BUILD FAILED
E:\ProjectJava\java-g11\Taijitan\nbproject\build-impl.xml:1134: The following error occurred while executing this line:
E:\ProjectJava\java-g11\Taijitan\nbproject\build-impl.xml:381: Compile failed; see the compiler error output for details.
一开始我以为是我不小心忘记添加子类了,但还是出现了同样的错误。ClubLes继承自Les,Les是一个只包含getter的接口。我需要把接口也序列化吗?我不知道是哪里出了问题。
俱乐部**
@Entity
public class ClubLes implements Serializable, Les {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "LesId")
private int id;
@Column(name = "Naam")
String naam;
@Column(name = "Soort")
String soort;
@ManyToOne
@JoinColumn(name = "GraadNumeriek")
Graad graad;
@Column(name = "FotoUrl")
private String fotoUrl;
@Column(name = "Beschrijving")
private String beschrijving;
@Column(name = "VideoUrl")
private String videoUrl;
public ClubLes() {
}
莱斯接口
public interface Les {
int getId();
String getNaam();
String getSoort();
//More getters
}
PU
我只有一个持久性单元,如下所示
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="TaijitanPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>domein.Graad</class>
<class>domein.Locatie</class>
<class>domein.ClubPersoon</class>
<class>domein.ClubActiviteit</class>
<class>domein.ClubLes</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost:1433;databaseName=Taijitan"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="javax.persistence.jdbc.password" value="Wachtwoord2019"/>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>
</persistence-unit>
</persistence>
我还注意到,当我从JPA中删除clubblesson时,它会对遵循相同方案的ClubPersoon抛出相同的错误
7条答案
按热度按时间vh0rcniy1#
我也有这个错误,这是因为我在 pom.xml 中有依赖关系和元模型插件配置,所以它们被生成了两次。尝试删除其中一个。
我的依赖项配置:
我的插件配置:
1l5u6lss2#
尝试在web.xml中设置:
<exclude-unlisted-classes>true</exclude-unlisted-classes>
错误也可能来自元模型生成器。
解决方法:
***在再次生成之前***清理生成目录,或者
(* 对于maven,这只是指
mvn clean install
-但只有当生成的元模型文件最终位于build文件夹中而不是普通文件旁边时)Car.java
,它会产生名为Car_.java
的档案(请注意底缐)。例如,这个产生的中继模型档案包含实体的字段,可供您在准则产生器中指涉。ioekq8ef3#
尝试将
<exclude-unlisted-classes>true</exclude-unlisted-classes>
添加到persistence.xml
。我认为由于缺少此语句,类被处理了两次。0ejtzxu14#
我最近遇到了同样的问题。在我的案例中,我正在开发一个工具(.jar),用于执行一些导入任务,使用CSV作为源,使用Oracle数据库作为数据的最终目的地。在其他运行在Application Server中的应用程序中,我们将其优势用于数据库交互。
我使用这个依赖关系:
在我的例子中,我在persistence.xml文件中有两个持久性单元,并且在流程中可以动态地使用其中一个。
首先,我尝试按照一些建议来解决这个问题,比如在持久性单元中设置属性exclude-unlisted-classes,如下所示:
我还将实体类添加到第一个持久单元中,因为一个类只能在一个已配置的持久单元中列出。但在运行时该实用程序找不到实体类。(与我使用的Netbeans无关)它也可以工作,但缺点是我必须有一些棘手的属性“jar文件”也用于定位实体类。
最后我决定用其他方法来处理这个问题,因为以前的解决方案并没有完全解决所有的问题。
下面的步骤对我很有效。在persistence.xml文件中,我将该行更改为:
这些是我的PU:
在pom.xml文件中,我使用了以下插件:
这样就生成了一个包含所有依赖项的fat.jar。最后一个注解我可以说我没有使用元模型类,而是使用了实体类本身,这样无论是在编译阶段还是在运行时阶段都没有任何问题。
72qzrwbm5#
我面临的问题,因为相同的类创建在项目的target-dev文件夹内。一旦我删除了所有的.java文件的Map器,然后我做了“无效和缓存/重启”,然后我的服务器启动。
uttx8gqw6#
在我的情况下,重置Intellij idea中项目的SDK只会有所帮助。
此外,在其他情况下,当/src/generated文件夹与/build(带有构建构件)一起删除时,它也会有所帮助。因此,出于某种原因,src/generated文件夹实际上没有在gradle的clean命令中更新或清理
qc6wkl3g7#
清理构建目录(maven的目标文件夹)对我有帮助。