【问题标题】:BasicDataSource not finding postgresql or postgis jdbc driversBasicDataSource 找不到 postgresql 或 postgis jdbc 驱动程序
【发布时间】:2015-05-06 01:03:35
【问题描述】:

我正在尝试将 BasicDataSource 添加到新的 LocalContainerEntityManagerFactoryBean。当我像这样创建新的数据源时:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.postgresql.Driver" />
    <property name="url" value="jdbc:postgresql://localhost:5432/database" />
    <property name="username" value="XXXXX" />
    <property name="password" value="XXXXX" />
</bean>

并将其添加到 entityManagerFactory

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
</bean>

我得到的错误是找不到 JDBC 驱动程序:

[org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure] HHH000342: Could not obtain connection to query metadata : Cannot load JDBC driver class 'org.postgresql.Driver'

我通过 maven 加载了 jar:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.3-1103-jdbc3</version>
</dependency>

和 mavens 添加到我的类路径

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

所以我想知道我错过了什么?我可以看到驱动程序可从 maven 依赖库中获得,但在启动时从未找到它。任何想法将不胜感激。

【问题讨论】:

  • jdbc:postgresql_postGIS://localhost:5432/database 必须是 jdbc:postgresql://localhost:5432/database PostGIS 只是 Postgres 的扩展,JDBC URL 没有改变。
  • 我对上面的问题进行了编辑,不幸的是,这并没有什么不同,因为它首先查看驱动程序并且永远不会检查连接方面......它可以被注释掉并且仍然抛出同样的错误

标签: java spring postgresql maven postgis


【解决方案1】:

可能是 maven 缓存问题...首先尝试更新到新版本,看看是否能解决问题:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4-1201-jdbc41</version>
</dependency>

这只是一个独立的应用程序还是你在容器中运行它,例如 JBoss 环境?

【讨论】:

  • 它只是一个独立的应用程序...安装新版本并没有解决问题。
  • 在命令行中运行以下命令会发生什么:mvn clean install
【解决方案2】:

问题是由 Eclipse 和我的 Maven 管理不善造成的。我手动构建了战争,并注意到 2 个不同的 postgresql jar 被加载到战争中,一个来自 Hibernate spatial 的旧版本和一个我通过 maven 加载的新版本(这也可以通过使用 maven 运行 view tree 命令来查看)。删除空间版本后,我必须手动运行 maven build war 并将库手动添加到 tomcat。我怀疑在正常项目清洁和 Maven 更新无法修复的地方留下了一些残留物。清理完所有残留物后,我就可以在 eclipse 中正常启动项目并找到库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多