我有一个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](默认任务-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依赖项来解决这个问题,还是有其他解决方法吗?
Update: 我也试图将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>
我得到了同样的错误 . bellow堆栈跟踪的一部分:
2017-01-05 13:07:11,990 SEVERE [org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager](默认任务-45)DriverClassLoader无法加载类: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](默认任务-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)
Update 2: 我做了进一步的改动但仍然没有成功 . 我在WEB-INF和MEtA-INF下的所有模块中添加了org.eclipse.birt.report.data.oda.jdbc_4.6.0.v201606072122.jar库
\ SRC \主\ web应用\ 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](默认任务-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的想法
1 回答
终于解决了这个问题 . 我必须在我的本地manen存储库中安装oda jdbc驱动程序,并将其作为依赖项添加到我的ejb模块中 .
此外,由于某些我无法解释的原因,Birt还需要我的web模块中的ojdbc6驱动程序 . 老实说,我无法理解为什么,因为整个birt实现和运行时都在ejb模块中 .
这解决了问题,现在报告正在生成 .
我现在面临两个我必须解决的新问题 .
1) java.lang.OutOfMemoryError: Java heap space :我在Eclipse bugzilla中发现这个问题可以通过ojdbc7驱动程序解决 . 除非我将服务器-Xmx推到1400mb以上,否则不会生成报告
2) [org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager] (default task-20) DriverClassLoader failed to load class: oracle.jdbc.driver.OracleDriver: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver :由于某种原因,当我想生成报告时,我只得到一次此错误 . 生成的报告没有问题,异常再也不会出现 .
至少报告现在正在运行,可以继续解决其他问题 .