【问题标题】:Cannot load JDBC Driver class in Birt 4.6.0-20160607无法在 Birt 4.6.0-20160607 中加载 JDBC 驱动程序类
【发布时间】:2017-01-09 06:18:02
【问题描述】:

我有一个 Java EE 项目,我在其中包含 Birt 运行时作为 maven 依赖项:

 <dependency>
  <groupId>org.eclipse.birt.runtime</groupId>
  <artifactId>org.eclipse.birt.runtime</artifactId>
  <version>4.6.0-20160607</version>
  <exclusions>
    <exclusion>
        <groupId>org.eclipse.birt.runtime</groupId>
        <artifactId>org.apache.xerces</artifactId>
    </exclusion>
    <exclusion>
      <artifactId>org.apache.poi</artifactId>
      <groupId>org.eclipse.birt.runtime</groupId>
    </exclusion>
  </exclusions>
</dependency>

引擎似乎已创建(至少我希望如此)。在我的报告中,我定义了数据源设置。

   <data-sources>
        <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="somename" id="43">
            <list-property name="privateDriverProperties">
                <ex-property>
                    <name>contentBidiFormatStr</name>
                    <value>ILYNN</value>
                </ex-property>
                <ex-property>
                    <name>metadataBidiFormatStr</name>
                    <value>ILYNN</value>
                </ex-property>
            </list-property>
            <property name="odaDriverClass">oracle.jdbc.driver.OracleDriver</property>
            <property name="odaURL">jdbc:oracle:thin:@host...</property>
            <property name="odaUser">username</property>
            <encrypted-property name="odaPassword" encryptionID="base64">password</encrypted-property>
        </oda-data-source>
    </data-sources>

不幸的是,Birt 似乎找不到 ojdbc 驱动程序(注意,我们使用的是 oracle 数据库)并且我们收到以下错误:

严重 [org.eclipse.birt.data.engine.odaconsumer](默认任务 20) 无法打开连接。: org.eclipse.birt.report.data.oda.jdbc.JDBCException:无法加载 JDBC 驱动类:oracle.jdbc.driver.OracleDriver。

我已在 WEB-INF/lib 下的 Web 模块中包含以下 jar org.eclipse.birt.report.data.oda.jdbc_4.6.0.v201606072122.jar 但我仍然遇到相同的错误。

有没有办法通过将 ojdbc 添加为 maven 依赖项来解决这个问题,或者有其他解决方法吗?

更新:我还尝试添加 org.eclipse.birt.report.data.oda.jdbc_4.6.0.v201606072122.jar 作为 maven 依赖项。

<!-- Oracle JDBC driver -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4.0</version>
    <scope>provided</scope>
</dependency>

 <dependency>
     <groupId>org.eclipse.birt</groupId>
     <artifactId>ojdbc</artifactId>
     <scope>system</scope>
     <version>1.0</version>
     <systemPath>${basedir}\src\main\resources\lib\org.eclipse.birt.report.data.oda.jdbc_4.6.0.v201606072122.jar</systemPath>
 </dependency>

我遇到了同样的错误。波纹管堆栈跟踪的某些部分:

2017-01-05 13:07:11,990 严重 [org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager](默认 task-45) DriverClassLoader 加载类失败: oracle.jdbc.driver.OracleDriver:java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 在 org.eclipse.birt.core.framework.URLClassLoader.findClass1(URLClassLoader.java:188)

......

......

2017-01-05 13:07:12,020 严重 [org.eclipse.birt.data.engine.odaconsumer](默认task-45)无法 打开连接。:org.eclipse.birt.report.data.oda.jdbc.JDBCException: 无法加载 JDBC 驱动程序类:oracle.jdbc.driver.OracleDriver。 在 org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.findDriver(JDBCDriverManager.java:881)

更新 2:我进行了进一步的更改,但仍然没有成功。我在 WEB-INF 和 MEtA-INF 下的所有模块中添加了 org.eclipse.birt.report.data.oda.jdbc_4.6.0.v201606072122.jar 库

\src\main\webapp\WEB-INF\lib\org.eclipse.birt.report.data.oda.jdbc_4.6.0.v201606072122.jar

结果大同小异:

2017-01-05 15:40:49,927 严重 [org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager](默认 task-19) DriverClassLoader 加载类失败: org.eclipse.birt.report.data.oda.jdbc: java.lang.ClassNotFoundException: org.eclipse.birt.report.data.oda.jdbc

我还想在这里指出一些事情。为了我们在应用程序中的持久性,我们在 Wildfly 上使用了一个数据源,其中我们使用 ojdbc 驱动程序作为 Wildfly 10 中的一个模块。

我对 Birt + ojdbc 的想法慢慢用完了

【问题讨论】:

  • 嗨,如果我没记错的话,你的更新已经结束了 2. 你的项目中有插件文件夹吗?例如:plugins\org.eclipse.birt.report.data.oda.jdbc_X.X.X\drivers ?
  • 是的,我很接近。谢谢

标签: oracle maven jakarta-ee birt ojdbc


【解决方案1】:

终于解决了问题。我必须在本地 manen 存储库中安装 oda jdbc 驱动程序,并将其作为依赖项添加到我的 ejb 模块中。

    <dependency>
         <groupId>org.eclipse.birt.ojdbc</groupId>
         <artifactId>odajdbc</artifactId>
         <version>4.6.0-201606072122</version>
     </dependency>

此外,由于某些我还无法解释的原因,Birt 在我的 Web 模块中还需要 ojdbc6 驱动程序。老实说,我不明白为什么,因为整个 birt 实现和运行时都在 ejb 模块中。

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.4.0</version>
    </dependency>

这解决了问题,现在正在生成报告。

我现在面临两个必须解决的新问题。

1) java.lang.OutOfMemoryError: Java heap space : 我在 Eclipse bugzilla 中发现这个问题可以通过 ojdbc7 驱动解决。除非我将服务器 -Xmx 推送到 1400mb 以上,否则不会生成报告

2)[org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager](默认任务20)DriverClassLoader加载类失败:oracle.jdbc.driver.OracleDriver:java.lang.ClassNotFoundException : oracle.jdbc.driver.OracleDriver: 出于某种原因,当我想生成报告时,我只收到一次此错误。报告生成没有问题,异常不再出现。

至少报告现在可以正常工作,并且可以继续解决其他问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2013-07-28
    • 2016-08-18
    • 2012-04-23
    • 2018-05-09
    • 2015-02-21
    相关资源
    最近更新 更多