tomcat - Birt 4.2 JDBCException : Cannot load JDBC Driver class: com. mysql.jdbc.Driver(Tomcat 6.0)

标签 tomcat jdbc birt classnotfoundexception

我试图让 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)

(后面是大约八十多行堆栈跟踪,为简洁起见我省略了)

我有 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 属于另一个我还没有尝试过的位置,或者某个地方有一些环境变量需要设置,但我找不到任何关于那可能是什么的信息。有谁知道发生了什么事吗?

更新

重新启动修复了它。我现在觉得自己很傻。

最佳答案

我尝试在 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 可以看到它。我重新部署了我的应用程序,它成功了。

关于tomcat - Birt 4.2 JDBCException : Cannot load JDBC Driver class: com. mysql.jdbc.Driver(Tomcat 6.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186905/

相关文章:

eclipse - 为FB Eclipse 4.5安装BIRT时出错

java - 将 Java Webapp 部署到 Cloud Foundry 会产生 Pool Empty 错误

java - 如何将 birt 图表渲染到流(png、svg)

java - 将 Android App 连接到 restful webservice

java - json 中的 JDBC Prepared 语句参数

java.sql.PreparedStatement.setString 函数使 Varchars 与 double 混淆

java - JDBC 尝试使用 null 参数从 MySQL 数据库检索 salt

MongoDB 和 BIRT 报告?

java - web.xml 无法正确标记 spring ServletDispatcher

java - 如何在Tomcat启动时从xml读取环境变量?