xmjaejae 2013-12-11 06:39 采纳率: 0%
浏览 1582

刚学习ofbiz,将ofbiz的数据库改成oracle时,出现如下错误,求帮忙

刚学习ofbiz ,想将ofbiz数据库改成oracle,我改了配置文件之后,ant load-demo ,没有报错,然后ant start后抱如下错,改怎么解决啊。谢谢
2013-12-11 13:41:21,694 (catalina-startup-0) [ UtilXml.java:1060:ERROR] XmlFileLoader: File file:/E:/Project 10/ofbiz/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/web.xml process error. Line: 165. Error message: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
2013-12-11 13:41:33,284 (default-invoker-Thread-18) [ SqlJdbcUtil.java:539:ERROR]
---- exception report ----------------------------------------------------------
Exception: java.sql.SQLException
Message: Conversion to String failed
---- stack trace ---------------------------------------------------------------
java.sql.SQLException: Conversion to String failed
oracle.sql.Datum.stringValue(Datum.java:181)
oracle.jdbc.driver.ScrollableResultSet.getString(ScrollableResultSet.java:518)
org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:213)
org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:213)
org.ofbiz.entity.jdbc.JdbcValueHandler$StringJdbcValueHandler.getValue(JdbcValueHandler.java:732)
org.ofbiz.entity.jdbc.JdbcValueHandler$StringJdbcValueHandler.getValue(JdbcValueHandler.java:718)
org.ofbiz.entity.jdbc.SqlJdbcUtil.getValue(SqlJdbcUtil.java:536)
org.ofbiz.entity.util.EntityListIterator.currentGenericValue(EntityListIterator.java:179)
org.ofbiz.entity.util.EntityListIterator.next(EntityListIterator.java:321)
org.ofbiz.entity.util.EntityListIterator.getCompleteList(EntityListIterator.java:435)
org.ofbiz.entity.finder.EntityFinderUtil$GetAll.handleOutput(EntityFinderUtil.java:481)
org.ofbiz.entity.finder.ListFinder.runFind(ListFinder.java:217)
org.ofbiz.minilang.method.entityops.EntityCondition.exec(EntityCondition.java:60)
org.ofbiz.minilang.SimpleMethod.runSubOps(SimpleMethod.java:311)
org.ofbiz.minilang.SimpleMethod.exec(SimpleMethod.java:458)
org.ofbiz.minilang.SimpleMethod.runSimpleMethod(SimpleMethod.java:275)
org.ofbiz.minilang.SimpleMethod.runSimpleService(SimpleMethod.java:294)
org.ofbiz.minilang.SimpleServiceEngine.serviceInvoker(SimpleServiceEngine.java:79)
org.ofbiz.minilang.SimpleServiceEngine.runSync(SimpleServiceEngine.java:48)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:390)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:225)
org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:163)
org.ofbiz.service.job.GenericServiceJob.exec(GenericServiceJob.java:71)
org.ofbiz.service.job.JobInvoker.run(JobInvoker.java:242)

java.lang.Thread.run(Thread.java:722)

2013-12-11 13:41:33,284 (default-invoker-Thread-18) [ SqlJdbcUtil.java:539:ERROR]
---- exception report ----------------------------------------------------------
Exception: java.sql.SQLException
Message: Conversion to String failed
---- stack trace ---------------------------------------------------------------
java.sql.SQLException: Conversion to String failed
oracle.sql.Datum.stringValue(Datum.java:181)
oracle.jdbc.driver.ScrollableResultSet.getString(ScrollableResultSet.java:518)
org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:213)
org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:213)
org.ofbiz.entity.jdbc.JdbcValueHandler$StringJdbcValueHandler.getValue(JdbcValueHandler.java:732)
org.ofbiz.entity.jdbc.JdbcValueHandler$StringJdbcValueHandler.getValue(JdbcValueHandler.java:718)
org.ofbiz.entity.jdbc.SqlJdbcUtil.getValue(SqlJdbcUtil.java:536)
org.ofbiz.entity.util.EntityListIterator.currentGenericValue(EntityListIterator.java:179)
org.ofbiz.entity.util.EntityListIterator.next(EntityListIterator.java:321)
org.ofbiz.entity.util.EntityListIterator.getCompleteList(EntityListIterator.java:435)
org.ofbiz.entity.finder.EntityFinderUtil$GetAll.handleOutput(EntityFinderUtil.java:481)
org.ofbiz.entity.finder.ListFinder.runFind(ListFinder.java:217)
org.ofbiz.minilang.method.entityops.EntityCondition.exec(EntityCondition.java:60)
org.ofbiz.minilang.SimpleMethod.runSubOps(SimpleMethod.java:311)
org.ofbiz.minilang.SimpleMethod.exec(SimpleMethod.java:458)
org.ofbiz.minilang.SimpleMethod.runSimpleMethod(SimpleMethod.java:275)
org.ofbiz.minilang.SimpleMethod.runSimpleService(SimpleMethod.java:294)
org.ofbiz.minilang.SimpleServiceEngine.serviceInvoker(SimpleServiceEngine.java:79)
org.ofbiz.minilang.SimpleServiceEngine.runSync(SimpleServiceEngine.java:48)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:390)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:225)
org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:163)
org.ofbiz.service.job.GenericServiceJob.exec(GenericServiceJob.java:71)
org.ofbiz.service.job.JobInvoker.run(JobInvoker.java:242)
java.lang.Thread.run(Thread.java:722)

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 15:08
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,首先确保你的OFBiz项目中已经安装并配置了Oracle数据库驱动程序。此外,你需要检查web.xml文件中的元素是否正确匹配了你所使用的数据库类型。

    如果你使用的是MySQL或其他非Oracle数据库,那么在web.xml文件中应该包含以下元素:

    <web-app>
        <display-name>My Web Application</display-name>
        <description>This is a sample web application.</description>
    
        <!-- JDBC driver class -->
        <jdbc-datasource>
            <driver-class>com.mysql.jdbc.Driver</driver-class>
        </jdbc-datasource>
    
        <!-- Connection URL -->
        <url>jdbc:mysql://localhost:3306/mydatabase</url>
    
        <!-- Username and password -->
        <username>myusername</username>
        <password>mypassword</password>
    
        <!-- Other configurations -->
    </web-app>
    

    如果您的项目使用的是Oracle数据库,请按照以下步骤操作:

    1. 确认数据库驱动:确保你的项目已添加正确的Oracle数据库驱动(例如org.h2.Driver)。你可以通过在pom.xmlbuild.gradle文件中指定jdbcdriver来实现这一点。

      <dependency>
          <groupId>org.h2</groupId>
          <artifactId>h2</artifactId>
          <version>1.4.200</version>
      </dependency>
      
    2. 修改web.xml

      • 更新<jdbc-datasource>标签,替换为对应的Oracle数据库连接信息,如用户名和密码。
      • <driver-class>属性设置为oracle.jdbc.OracleDriver
      • 如果你的应用运行在Windows上,可能还需要将<jdbc-url>属性设置为jdbc:oracle:thin:@//[hostname]:[port]/[service_name]

      示例:

      <jdbc-datasource>
          <driver-class>oracle.jdbc.OracleDriver</driver-class>
          <url>jdbc:oracle:thin:@//[hostname]:[port]/[service_name]</url>
          <username>[username]</username>
          <password>[password]</password>
      </jdbc-datasource>
      
    3. 重新编译并部署:完成上述更改后,重新构建和部署你的项目,这通常会自动更新依赖项和任何配置。

    4. 测试连接:现在你应该能够成功地与Oracle数据库建立连接,并进行基本的数据查询。如果你仍然遇到问题,请提供更详细的信息,以便我能进一步帮助你解决问题。

    评论

报告相同问题?