无法在 Birt 4.6.0-20160607 中加载 JDBC 驱动程序 class
Cannot load JDBC Driver class in Birt 4.6.0-20160607
我有一个 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 数据库),我们得到以下错误:
SEVERE [org.eclipse.birt.data.engine.odaconsumer] (default task-20)
Unable to open connection.:
org.eclipse.birt.report.data.oda.jdbc.JDBCException: Cannot load JDBC
Driver class: 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 SEVERE
[org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager] (default
task-45) DriverClassLoader failed to load class:
oracle.jdbc.driver.OracleDriver: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at org.eclipse.birt.core.framework.URLClassLoader.findClass1(URLClassLoader.java:188)
......
......
2017-01-05 13:07:12,020 SEVERE
[org.eclipse.birt.data.engine.odaconsumer] (default task-45) Unable to
open connection.: org.eclipse.birt.report.data.oda.jdbc.JDBCException:
Cannot load JDBC Driver class: oracle.jdbc.driver.OracleDriver.
at 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 SEVERE
[org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager] (default
task-19) DriverClassLoader failed to load class:
org.eclipse.birt.report.data.oda.jdbc:
java.lang.ClassNotFoundException:
org.eclipse.birt.report.data.oda.jdbc
这里我还要说明一点。为了我们在应用程序中的持久性,我们在 wildfly 上使用了一个数据源,其中我们将 ojdbc 驱动程序用作 Wildfly 10 中的一个模块。
我慢慢地 运行 对 Birt + ojdbc 没有想法
终于解决了问题。我必须在本地 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 加载失败 class: oracle.jdbc.driver.OracleDriver: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver:出于某种原因,当我想要生成一份报告时,我只遇到过一次这个错误。报告生成没有问题,异常再也不会出现。
至少报告现在有效,可以继续解决其他问题。
我有一个 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 数据库),我们得到以下错误:
SEVERE [org.eclipse.birt.data.engine.odaconsumer] (default task-20) Unable to open connection.: org.eclipse.birt.report.data.oda.jdbc.JDBCException: Cannot load JDBC Driver class: 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 SEVERE [org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager] (default task-45) DriverClassLoader failed to load class: oracle.jdbc.driver.OracleDriver: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver at org.eclipse.birt.core.framework.URLClassLoader.findClass1(URLClassLoader.java:188)
......
......
2017-01-05 13:07:12,020 SEVERE [org.eclipse.birt.data.engine.odaconsumer] (default task-45) Unable to open connection.: org.eclipse.birt.report.data.oda.jdbc.JDBCException: Cannot load JDBC Driver class: oracle.jdbc.driver.OracleDriver. at 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 SEVERE [org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager] (default task-19) DriverClassLoader failed to load class: org.eclipse.birt.report.data.oda.jdbc: java.lang.ClassNotFoundException: org.eclipse.birt.report.data.oda.jdbc
这里我还要说明一点。为了我们在应用程序中的持久性,我们在 wildfly 上使用了一个数据源,其中我们将 ojdbc 驱动程序用作 Wildfly 10 中的一个模块。
我慢慢地 运行 对 Birt + ojdbc 没有想法
终于解决了问题。我必须在本地 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 加载失败 class: oracle.jdbc.driver.OracleDriver: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver:出于某种原因,当我想要生成一份报告时,我只遇到过一次这个错误。报告生成没有问题,异常再也不会出现。
至少报告现在有效,可以继续解决其他问题。