引起:java.lang.NoSuchMethodError:org.postgresql.core.BaseConnection.getEncoding()Lorg / postgresql / core / Encoding; [英] Caused by: java.lang.NoSuchMethodError: org.postgresql.core.BaseConnection.getEncoding()Lorg/postgresql/core/Encoding;

查看:524
本文介绍了引起:java.lang.NoSuchMethodError:org.postgresql.core.BaseConnection.getEncoding()Lorg / postgresql / core / Encoding;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在spring mvc中配置PostgreSQL,Hibernate。我收到以下错误:

  org.springframework.beans.factory.BeanCreationException:在ServletContext中定义名称为'sessionFactory'的Bean时创建错误资源[/WEB-INF/spring/root-context.xml]:调用init方法失败;嵌套异常是java.lang.NoSuchMethodError:org.postgresql.core.BaseConnection.getEncoding()Lorg / postgresql / core / Encoding;在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)

在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject
(AbstractBeanFactory.java:294 )美元,org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225 b $ b)
在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291 )
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory。 preInstantiateSingletons(DefaultListableBeanFactory.java:567)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext。 Java的:464),美元,org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385 b $ b)
在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
在org.apache .catalina.core.ContainerBase $ StartC hild.call(ContainerBase.java:1566)
at org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1556)
在java.util.concurrent.FutureTask $同步。 innerRun(Unknown Source)$ java.util.concurrent.FutureTask.run中的
(未知源)$ java.util.concurrent.ThreadPoolExecutor.runWorker中的
(未知源)
at java.util。 concurrent.ThreadPoolExecutor $ Worker.run(未知源)$ b $ java.util.run(未知源)
引起: )Lorg / PostgreSQL的/型芯/编码;在org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1889)

在org.hibernate.tool.hbm2ddl.DatabaseMetadata.initSequences(DatabaseMetadata.java:131)
。在组织.hibernate.tool.hbm2ddl.DatabaseMetadata。< init>(DatabaseMetadata.java:46)
at org.hibernate.tool.hbm2ddl.DatabaseMetadata。< init>(DatabaseMetadata.java:39)
在org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:129)
at org.hibernate.impl.SessionFactoryImpl。< init>(SessionFactoryImpl.java:314)
at org。在org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
(AnnotationConfiguration.java:859)
。在org.springframework.orm.hibernate3.LocalSessionFactoryBean。 newSessionFactory(LocalSessionFactoryBean.java:860)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.jav a:779)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452 1514)

... 22更


解决方案

你没有完全解释你得到异常的上下文,但是我会做一些假设。

当您使用postgres 8驱动程序时,发生错误时发生postgres 9 DB。一个常见的情况是它通过你使用的任何构建系统作为传递依赖被引入。为了做出更多的假设,最常见的情况是在添加postgis dep时包括一个较旧的驱动程序。通过maven。解决方法是排除dep,例如像

 <依赖关系> 
< groupId> org.postgis< / groupId>
< artifactId> postgis-jdbc< / artifactId>
< version> 1.3.3< / version>
< scope>编译< / scope>
<排除项>
<排除>
< groupId> org.postgis< / groupId>
< artifactId> postgis-stubs< / artifactId>
< /排除>
< /排除>
< /依赖关系>

无论如何,它可能是一个不同的依赖关系或不同的构建系统,但答案的要点应该适用,找出是什么将erroneus dep带给了你的类路径,并排除它。


I am configure PostgreSQL,Hibernate in spring mvc . i have getting following error

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.postgresql.core.BaseConnection.getEncoding()Lorg/postgresql/core/Encoding;
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodError: org.postgresql.core.BaseConnection.getEncoding()Lorg/postgresql/core/Encoding;
    at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1889)
    at org.hibernate.tool.hbm2ddl.DatabaseMetadata.initSequences(DatabaseMetadata.java:131)
    at org.hibernate.tool.hbm2ddl.DatabaseMetadata.<init>(DatabaseMetadata.java:46)
    at org.hibernate.tool.hbm2ddl.DatabaseMetadata.<init>(DatabaseMetadata.java:39)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:129)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:314)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    ... 22 more

解决方案

You didn't completly explain the context you're getting the exception, but I'llm make a few assumptions.

The error happens when you're using a postgres 8 driver, against a postgres 9 DB. A common case is that it is pulled in as a transitive dependency via whatever build system you're using. To make even more assumptions, the very common case is that an older driver is included when adding postgis dep e.g. via maven. The solution is to exclude the dep, e.g. like

<dependency>
   <groupId>org.postgis</groupId>
   <artifactId>postgis-jdbc</artifactId>
   <version>1.3.3</version>
   <scope>compile</scope>
   <exclusions>
      <exclusion>
         <groupId>org.postgis</groupId>
         <artifactId>postgis-stubs</artifactId>
      </exclusion>
   </exclusions>
</dependency>

anyways, it could be a different dependency, or a different build system, but the gist of the answer should apply, find out what brings the erroneus dep to your classpath, and exclude it

这篇关于引起:java.lang.NoSuchMethodError:org.postgresql.core.BaseConnection.getEncoding()Lorg / postgresql / core / Encoding;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆