当前位置: 首页 > 知识库问答 >
问题:

尝试通过Hibernate连接到Oracle时获得java.lang.NoSuchMethodError

广绪
2023-03-14

我正在使用SpringMVC和Hibernate构建一个应用程序。我还没有将Hibernate和Spring集成在一起(对两者都是新的),并且希望确保可以首先通过Hibernate打开会话。

我创建了一个简单的函数来测试,当前收到以下错误:

线程“main”java.lang.nosuchmethoderror中出现异常:org.hibernate.integrator.internal.integratorServiceImpl.(ljava/util/linkedhashset;lorg/hibernate/boot/registry/classloade/spi/classloaderservice;)V

我的日志告诉我,当我尝试使用StandardServiceRegistryBuilder().applySettings()函数调用时会发生错误。

我在下面放置了尝试创建连接的示例函数(请注意,它是void,除了尝试捕获任何异常之外,它实际上不做任何事情)

public static void main (String [] args) {
        testHibernate();
    }
public static void testHibernate() {
        try {
            String hibernateFilePath = "src/main/java/hibernate.cfg.xml";
            File hibernateFile = new File(hibernateFilePath);
            Configuration configuration = new Configuration().configure(hibernateFile);
            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
            SessionFactory factory = configuration.buildSessionFactory(builder.build());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

下面是我的hibernate.cfg.xml文件:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:oracle://servername.website.com:12345/dbname678</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.username">username</property>
        <property name="connection.password">password</property>
    </session-factory>
</hibernate-configuration>

我的项目的文件结构:

关于我的方法的想法:我理解抛出的错误与函数如何调用有关。通常,当库栏的函数Foo调用2.0版而不是3.0版时,会出现java.lang.NoSuchMethodError。我重新检查了我的依赖性,并试图重建项目,但我仍然面临同样的问题。我还尝试了Intellij的Hibernate样板代码来测试连接,但仍然收到完全相同的错误。

共有1个答案

齐思淼
2023-03-14

您可能存在依赖冲突,例如,您拥有某个库的版本X,而Hibernate需要该库的版本Y。

您可以使用Maven查找依赖冲突,使用以下命令:

mvn dependency:tree -Dverbose

它将打印一个依赖关系树,并指示哪些库相互冲突。

 类似资料:
  • 我试图连接到mysql数据库使用hibernate从cfg文件作为 虽然我的连接字符串、用户名、密码是正确的,并且在其他具有基本jdbc连接的项目中运行良好,但当我使用hibernate尝试它时,我在控制台上遇到了这个错误 是的,数据库服务器已启动并运行,但来自此Hibernate应用程序的连接被拒绝

  • 我正在做一个mongoexport,然后是一个5000万记录集的BigQuery负载。我的所有云功能和应用引擎实例都可以通过VPC对等连接设置,通过无服务器VPC访问GCP托管的我们的Atlas,很好地连接到MongoAtlas 但是,我无法让计算引擎实例通过我们的VPC连接。当我添加计算引擎实例外部IP时,它连接良好。当我删除它并为计算引擎实例添加内部IP时,我得到超时,但它确实显示: 所以我最

  • 我正在尝试连接到远程主机以发出命令,但在运行代码时收到以下错误消息: SSH:握手失败:SSH:密钥交换没有通用算法;提供的客户端:[curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 difffie-hellman-group14-sha1],提供的服务器:[difffie-h

  • 如果使用oraDB18Home1进行连接,则会出现以下错误apear。 尝试检索错误ORA-12541的文本时出错 检查项目 TNS_ADMIN环境变量定义为“C:\app\muhiuddin\product\18.0.0\dbhomeXE\network\ADMIN” 找到了“C:\app\muhiuddin\product\18.0.0\dbhomeXE\network\admin\sqlne

  • 试图通过IMAP连接连接到gmail,捕获javax.mail.MessagingException 堆栈跟踪: 主:

  • 我不擅长java,还在尝试如何通过jdbc驱动程序将java连接到mysql(xampp),有人知道我为什么总是出错吗? 以下是控制台结果 我已经创建了数据库并插入了两个数据,其中一个是“username=rod1,password=rod”