【问题标题】:Derby Embedded Driver Error XBM02 Please ensure your classpath includes the correct Derby softwareDerby Embedded Driver Error XBM02 请确保您的类路径包含正确的 Derby 软件
【发布时间】:2017-04-13 12:35:39
【问题描述】:

我正在使用 Spring 构建 JavaEE 应用程序,并尝试将其与 DerbyEmbeddedDriver 连接。此应用程序将用于 SAP Hana Cloud Platform 试用版,因此我使用的是他们的 Tomcat 8 版本。

Tomcat 8 位于:https://tools.hana.ondemand.com/

SAP HCP:https://account.hanatrial.ondemand.com/

当我启动 Tomcat 服务器时发生错误。这是我看到的:

原因:ERROR XJ041: 无法创建数据库'memory:DemoDB',详情参见下一个异常。 在 org.apache.derby.iapi.error.StandardException.newException(未知来源) 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(未知来源) ... 113 更多 原因:错误 XBM02:由于缺少 org.apache.derby.iapi.types.DataValueFactory 的功能,启动失败。请确保您的类路径包含正确的 Derby 软件。 在 org.apache.derby.iapi.error.StandardException.newException(未知来源) 在 org.apache.derby.iapi.error.StandardException.newException(未知来源) 在 org.apache.derby.iapi.services.monitor.Monitor.missingImplementation(未知来源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知来源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startModule(未知来源) 在 org.apache.derby.impl.services.monitor.FileMonitor.startModule(未知来源) 在 org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(未知来源) 在 org.apache.derby.impl.db.BasicDatabase.boot(未知来源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知来源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知来源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.bootService(未知来源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(未知来源) 在 org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(未知来源) 在 org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(未知来源) ... 110 更多

关于错误,我使用的是 Maven,这是我的 Derby 依赖配置:

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.13.1.1</version>
</dependency>

所以我假设 maven 应该将它添加到 Maven 依赖库中,因此我不需要在 Classpath 中显式添加它,对吧?

关于数据源对象的创建。此 Tomcat 服务器在 Servers//config_master/connection_data/connection.properties 下有一个配置文件,其中包含:

#----------------------------------------
# Connection parameters for a local Derby database
# DB and tables are created automatically (if missing)
#----------------------------------------
javax.persistence.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver
javax.persistence.jdbc.url=jdbc:derby:memory:DemoDB;create=true
javax.persistence.jdbc.user=demo
javax.persistence.jdbc.password=demo
eclipselink.target-database=Derby

#----------------------------------------
# Connection parameters MaxDB
#----------------------------------------
#javax.persistence.jdbc.driver=com.sap.dbtech.jdbc.DriverSapDB
#javax.persistence.jdbc.url=jdbc:sapdb://<host>/DEMO
#javax.persistence.jdbc.user=demo
#javax.persistence.jdbc.password=demo
#eclipselink.target-database=org.eclipse.persistence.platform.database.MaxDBPlatform

这由服务器使用,它将创建一个新的数据源并根据定义的名称将其注入到上下文中,所以当我想在应用程序上获取它时,我所做的就是:

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() throws NamingException {
        InitialContext ctx = new InitialContext();
        DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/memory/DemoDB");

        return dataSource;
    }
}

你能指出我可能遗漏的任何东西吗?

【问题讨论】:

    标签: java spring tomcat sap derby


    【解决方案1】:

    我找到了问题...问题是 derby 依赖项在 pom.xml 中被列为测试依赖项两次...

    这个 pom.xml 文件是从另一个项目中重复使用的,并且在清理它时跳过了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多