我正在尝试让Birt 4.2.0在Tomcat 6.0服务器上运行,而我根本无法让它加载mySql JDBC驱动程序。我的报告在Eclipse的预览版中运行良好,当我将它提供给ReportEngine时它工作正常,但是Web查看器不断吐出这个异常:
SEVERE: DriverClassLoader failed to load class: com.mysql.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.eclipse.birt.core.framework.URLClassLoader.findClass1(URLClassLoader.java:188)
at org.eclipse.birt.core.framework.URLClassLoader$1.run(URLClassLoader.java:156)
at org.eclipse.birt.core.framework.URLClassLoader$1.run(URLClassLoader.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.birt.core.framework.URLClassLoader.findClass(URLClassLoader.java:151)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.loadExtraDriver(JDBCDriverManager.java:1024)
at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.findDriver(JDBCDriverManager.java:819)
at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.loadAndRegisterDriver(JDBCDriverManager.java:946)
(接下来是大约80多行stackfracing,为简洁起见我省略了)
我有mysql-connector-java-5.1.21-bin.jar,我把它放在/usr/local/apache-tomcat-6.0.33/webapps/birt/WEB-INF/lib中。经过大量的谷歌搜索,我也尝试将它放在许多其他地方,包括/usr/local/apache-tomcat-6.0.33/lib,/usr/local/apache-tomcat-6.0.33/common/lib ,和/usr/local/apache-tomcat-6.0.33/webapps/birt/WEB-INF/platform/plugins/org.eclipse.birt.report.data.oda.jdbc_5.1.21/drivers。没有任何影响。 我的.rptdesign文件中的数据源如下:
<data-sources>
<oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="Playrific live" id="49">
<list-property name="privateDriverProperties">
<ex-property>
<name>metadataBidiFormatStr</name>
<value>ILYNN</value>
</ex-property>
<ex-property>
<name>disabledMetadataBidiFormatStr</name>
</ex-property>
<ex-property>
<name>contentBidiFormatStr</name>
<value>ILYNN</value>
</ex-property>
<ex-property>
<name>disabledContentBidiFormatStr</name>
</ex-property>
</list-property>
<property name="odaDriverClass">com.mysql.jdbc.Driver</property>
<property name="odaURL">jdbc:mysql://10.177.134.242:3406/db_playsmrt</property>
<property name="odaUser">[redacted]</property>
<encrypted-property name="odaPassword" encryptionID="base64">[redacted]</encrypted-property>
</oda-data-source>
</data-sources>
此时,我唯一能想到的是mysql-connector-java-5.1.21-bin.jar属于我还没有尝试过的另一个位置,或者某个地方有一些环境变量需要设置,但我找不到任何可能的东西。有谁知道发生了什么事?
更新
宣布重新启动修复它。我现在觉得很蠢。
答案 0 :(得分:0)
我在尝试在jboss eap 6.1中运行我的BIRT报告时遇到了类似的情况,其中我的mysql驱动程序被配置为jboss模块。我的应用程序按预期工作,但BIRT找不到com.mysql.jdbc.Driver。为了解决这个问题,我添加了
<module name="com.mysql" export="true"/>
到我的jboss-deployment-structure.xml文件,以便容器导出com.mysql依赖项,BIRT的JDBCDriverManager可以看到它。我重新部署了我的应用程序并且运行了。