此类未定义公共默认构造函数,或构造函数引发异常。内部异常:java.lang.InstantiationException
Posted
技术标签:
【中文标题】此类未定义公共默认构造函数,或构造函数引发异常。内部异常:java.lang.InstantiationException【英文标题】:This class does not define a public default constructor, or the constructor raised an exception. Internal Exception: java.lang.InstantiationException 【发布时间】:2013-01-28 12:45:33 【问题描述】:大家好,我的 JPA 项目有问题。 Fichier.java 端 Application.java 实现接口“FileSystemElement.java” 这些是我的课 应用程序.java
package com.bfi.webtop.model;
import java.io.Serializable;
import java.util.*;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;
/** @pdOid d477195f-149e-4336-8586-19d6a09ee2d4 */
@Entity
@Table(name="application_")
public abstract class Application implements FileSystemElement, Serializable
// public Application()
// super();
//
public Application(int id_app, String url)
super();
this.id_app = id_app;
this.url = url;
public Application()
super();
// TODO Auto-generated constructor stub
private int id_app;
private java.lang.String url;
/**
* @return the url
*/
public java.lang.String getUrl()
return url;
/**
* @param url the url to set
*/
public void setUrl(java.lang.String url)
this.url = url;
/**
* @return the id_app
*/
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId_app()
return id_app;
/**
* @param id_app the id_app to set
*/
public void setId_app(int id_app)
this.id_app = id_app;
Fichier.java
package com.bfi.webtop.model;
/***********************************************************************
* Module: Fichier.java
* Author: Marwa
* Purpose: Defines the Class Fichier
***********************************************************************/
import java.util.*;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public abstract class Fichier implements FileSystemElement
private int id_fichier;
private java.lang.String extension;
private java.lang.Boolean supprim;
/**
* @return the extension
*/
public java.lang.String getExtension()
return extension;
/**
* @param extension the extension to set
*/
public void setExtension(java.lang.String extension)
this.extension = extension;
/**
* @return the supprim
*/
public java.lang.Boolean getSupprim()
return supprim;
/**
* @param supprim the supprim to set
*/
public void setSupprim(java.lang.Boolean supprim)
this.supprim = supprim;
/**
* @return the id_fichier
*/
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId_fichier()
return id_fichier;
/**
* @param id_fichier the id_fichier to set
*/
public void setId_fichier(int id_fichier)
this.id_fichier = id_fichier;
public Fichier()
super();
FileSystemElement.java
package com.bfi.webtop.model;
import javax.annotation.Generated;
import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2013-01-28T10:33:26.416+0100")
@StaticMetamodel(FileSystemElement.class)
public class FileSystemElement_
其他类具有相同的结构 当我尝试这样做时:jpa tooles> 从实体生成表我有以下错误
线程“主”javax.persistence.PersistenceException 中的异常:异常 >[EclipseLink-28019](Eclipse 持久性服务 - 2.4.0.v20120608-r11652):org.eclipse.persistence.exceptions.EntityManagerSetupException 异常描述:PersistenceUnit [webtop] 的部署失败。关闭此 PersistenceUnit 的所有工厂。 内部异常:异常 [EclipseLink-0](Eclipse Persistence Services - 2.4.0.v20120608-r11652):org.eclipse.persistence.exceptions.IntegrityException
描述符异常:
异常 [EclipseLink-34] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DescriptorException 异常描述:该类没有定义公共的默认构造函数,或者构造函数引发了异常。 内部异常:java.lang.InstantiationException 描述符:RelationalDescriptor(com.bfi.webtop.model.Application --> [DatabaseTable(application_)])
异常 [EclipseLink-34] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DescriptorException 异常描述:该类没有定义公共的默认构造函数,或者构造函数引发了异常。 内部异常:java.lang.InstantiationException 描述符:RelationalDescriptor(com.bfi.webtop.model.Fichier --> [DatabaseTable(FICHIER)])
异常 [EclipseLink-34] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DescriptorException 异常描述:该类没有定义公共的默认构造函数,或者构造函数引发了异常。 内部异常:java.lang.InstantiationException 描述符:RelationalDescriptor(com.bfi.webtop.model.Raccourci --> [DatabaseTable(RACCOURCI)])
运行时异常:
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createDeployFailedPersistenceException(EntityManagerSetupImpl.java:616)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:596)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.perform(Main.java:85)
at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.execute(Main.java:76)
at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.main(Main.java:63)
Caused by: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.EntityManagerSetupException
异常描述:PersistenceUnit [webtop] 的部署失败。关闭此 PersistenceUnit 的所有工厂。 内部异常:异常 [EclipseLink-0](Eclipse Persistence Services - 2.4.0.v20120608-r11652):org.eclipse.persistence.exceptions.IntegrityException
我正在使用 Eclipse Juno 请问有什么帮助吗?
【问题讨论】:
为什么把默认的无参数应用构造函数注释掉了?错误状态 EclipseLink 无法启动您的类的新实例,因此它可能是相关的。FileSystemElement
接口在哪里?我只看到一个FileSystemElement_
类。
为什么Application
和Fichier
类是抽象的?
【参考方案1】:
您已将 Fichier 类定义为抽象类:
public abstract class Fichier
删除 abstract 就可以了。这种情况下的错误信息有些混乱。
【讨论】:
【参考方案2】:由于错误状态,您需要为您的应用程序类提供一个默认(无参数)构造函数。
如果您不想将构造函数公开给您的应用,则可以是私有的。
【讨论】:
詹姆斯并没有改变什么 构造函数不应该是私有的,因为它违反了 JPA2 规范,该规范声明:The entity class must have a no-arg constructor. The entity class may have other constructors as well. The no-arg constructor must be public or protected
【参考方案3】:
考虑在您的类中创建无参数构造函数,然后清理您的项目并尝试。 我有同样的问题,我用 lombok 解决了它
【讨论】:
以上是关于此类未定义公共默认构造函数,或构造函数引发异常。内部异常:java.lang.InstantiationException的主要内容,如果未能解决你的问题,请参考以下文章
此类应在 android manifest 中提供默认构造函数(不带参数的公共构造函数)
隐藏实用程序类构造函数:实用程序类不应具有公共或默认构造函数
wpf对类型“xxx.MainWindow”的构造函数执行符合指定的绑定约束的调用时引发了异常