Java addPackage方法的Hibernate NoSuchMethodError
我使用Hibernate连接到我的数据库,并在我的dbConnector类中配置我的数据库:Java addPackage方法的Hibernate NoSuchMethodError,java,hibernate,maven,configuration,Java,Hibernate,Maven,Configuration,我使用Hibernate连接到我的数据库,并在我的dbConnector类中配置我的数据库: public static SessionFactory connectingHibernate(){ Properties database=new Properties(); database.setProperty("hibernate.connection.driver_class",PROPERTY_NAME_DATABASE_DRIVER); database.s
public static SessionFactory connectingHibernate(){
Properties database=new Properties();
database.setProperty("hibernate.connection.driver_class",PROPERTY_NAME_DATABASE_DRIVER);
database.setProperty("hibernate.connection.username",USERNAME);
database.setProperty("hibernate.connection.password",PASSWORD);
database.setProperty("hibernate.connection.url",url);
database.setProperty("hibernate.dialect",DIALECT);
Configuration cfg=new Configuration()
.setProperties(database)
.addPackage("androidapi.model")
.addAnnotatedClass(User.class)
.addAnnotatedClass(Product.class)
.addAnnotatedClass(PriceProduct.class)
.addAnnotatedClass(CoinPrice.class)
.addAnnotatedClass(SellPage.class)
.addAnnotatedClass(Setting.class)
.addAnnotatedClass(Message.class);
StandardServiceRegistryBuilder ssrb=new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties());
sessionFactory=cfg.buildSessionFactory(ssrb.build());
return sessionFactory;
}
当我从ide内部运行我的应用程序时,我的代码工作正常,但在使用maven生成war文件后,我在使用db的方法上遇到了这个异常!我怎样才能解决这个问题
例外情况:
"error": "Internal Server Error",
"exception": "java.lang.NoSuchMethodError",
"message": "org.hibernate.cfg.Configuration.addPackage(Ljava/lang/String;)Lorg/hibernate/cfg/Configuration;",
"exception": "java.lang.NoSuchMethodError",
"message": "org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;",
"path": "/myinsta/admin_api/mGetAllUser"
删除这一行后:.addPackage(“androidapi.model”)
我得到了这个异常:
"error": "Internal Server Error",
"exception": "java.lang.NoSuchMethodError",
"message": "org.hibernate.cfg.Configuration.addPackage(Ljava/lang/String;)Lorg/hibernate/cfg/Configuration;",
"exception": "java.lang.NoSuchMethodError",
"message": "org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;",
"path": "/myinsta/admin_api/mGetAllUser"
my pom.xml Hibernate依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>LATEST</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>LATEST</version>
</dependency>
mysql
您的类路径上有多个版本的hibernate(在撰写本文时:很可能是3.6.0.beta2
和5.2.1.Final
)
删除:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>LATEST</version>
<type>pom</type>
</dependency>
org.hibernate
冬眠
最新的
聚甲醛
这是一个旧版本。您的类路径上有多个版本的hibernate(在撰写本文时:很可能是3.6.0.beta2
和5.2.1.Final
)
删除:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>LATEST</version>
<type>pom</type>
</dependency>
org.hibernate
冬眠
最新的
聚甲醛
这是一个旧版本。您不需要这一行
addPackage("androidapi.model")
方法addPackage()
不会扫描包。它用于读取“包级元数据”(.package info-
文件)
看起来,您使用了Hibernate 5。不能将Hibernate 4配置代码用于Hibernate 5
如果你想扫描软件包
要使用有效的Hibernate版本,只需使用Hibernate core检查此页面
版本:
并将其添加到pom.xml
(如果使用Maven)。例如,对于Hibernate 5.2.1.Final(它使用Java 8):
org.hibernate
你不需要这条线
addPackage("androidapi.model")
方法addPackage()
不会扫描包。它用于读取“包级元数据”(.package info-
文件)
看起来,您使用了Hibernate 5。不能将Hibernate 4配置代码用于Hibernate 5
如果你想扫描软件包
要使用有效的Hibernate版本,只需使用Hibernate core检查此页面
版本:
并将其添加到pom.xml
(如果使用Maven)。例如,对于Hibernate 5.2.1.Final(它使用Java 8):
org.hibernate
你真的需要这个添加包(“androidapi.model”)
吗?是的,如果我删除这行,它就找不到我的数据库模型类,比如User&@v、 Ladynev您是否在用户
上使用注释?旁注(与问题无关):通常您不想使用最新版本
,因为这会使您的构建不确定。@raphaëλ您说得对!你真的需要这个addPackage(“androidapi.model”)
?是的,如果我删除这一行,它就找不到像User&@v、 Ladynev您是否在用户
上使用注释?旁注(与问题无关):通常您不想使用最新版本
,因为这会使您的构建不确定。@raphaëλ您说得对!TnQFunny,看起来像,hibernate
是hibernate旧版本的工件id:)有趣的是,hibernate
是hibernate旧版本的工件id:)“异常”:“java.lang.NoSuchMethodError”,“消息”:“org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;”,“路径”:“/myinsta/admin_api/mGetAllUser”删除addpack()后,我删除了所有缓存的jar文件并下载了所有again@mehdiakbarian您需要修复您的pom.xml
,这就是重点!怎样??当我使用ide运行和调试时,我的pom.xml工作得很好,但当我使war文件不工作时,idk如何修复它“异常”:“java.lang.NoSuchMethodError”,“消息”:“org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;”,“路径”:“/myinsta/admin_api/mGetAllUser”,在删除addpack()后我删除了所有缓存的jar文件并下载了所有again@mehdiakbarian您需要修复您的pom.xml
,这就是重点!怎样??当我使用ide运行和调试时,我的pom.xml工作得很好,但当我制作war文件时,它不工作,idk如何修复它