Java Mule ClassNotFoundException:jdbcDriver

Java Mule ClassNotFoundException:jdbcDriver,java,xml,mule,jython,Java,Xml,Mule,Jython,我使用的是hsqldb2.3.2.jar。这是因为类的名称(在2.x中)是org.hsqldb.jdbc.JDBCDriver找到了解决方案 java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: org.hsqldb.jdbc.JDBCDriver at org.python.core.Py.JavaError(Unknown Source) at org.python.core.Py.JavaE

我使用的是hsqldb2.3.2.jar。

这是因为类的名称(在2.x中)是
org.hsqldb.jdbc.JDBCDriver
找到了解决方案

java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: org.hsqldb.jdbc.JDBCDriver

    at org.python.core.Py.JavaError(Unknown Source)
    at org.python.core.Py.JavaError(Unknown Source)
    at org.python.core.PyReflectedFunction.__call__(Unknown Source)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
默认情况下,依赖项在与Jython/Groovy脚本或应用程序相同的类加载器中可用。但有时这还不够。例如,如果我们有一个依赖于SQL数据库驱动程序的脚本,并且在代码中使用了java.SQL.DriverManager.getConnection(),我们希望驱动程序类位于系统类加载器上。这是因为DriverManager类只能“查看”系统类加载器中的类,而不能查看其他类加载器中的类。我们得到的一个可能的异常是java.sql.SQLException:没有找到合适的驱动程序

有关更多详细信息,请参见下面的讨论:


我对mysql驱动程序也有类似的问题,这似乎是mule 3.4和3.5中的问题(在3.3中没有失败)。 如果驱动程序包含在项目中,Mule在类路径中找不到该驱动程序。 我所做的是将驱动程序添加到运行时(mule服务器)类路径:

无论如何:

[Anypoint_文件夹]\plugins\org.mule.tooling.server.3.5.0.ee_3.5.0.201407101856\mule\lib\opt

[org.mule.tooling.server.3.5.0.ee_3.5.0.201407101856]取决于您安装的版本。如果更新Anypoint,可能需要再次复制del jdbc驱动程序,因为运行时更新会创建一个新文件夹

Mule独立运行时:

[mule-enterprise-standalone-3.5.0]\lib\opt

如果要部署到servlet容器(如Tomcat),请执行以下操作:

[apache-tomcat-6.0.39]\lib


您应该手动将Jdbc驱动程序jar文件添加到mule中的Jdbc连接器中,然后运行它。您还可以使用那里的TestConnection选项确保测试连接是否成功。

当我将驱动程序名称更改为上面的驱动程序名称时,会出现错误:SyntaxError:('invalid syntax',('',3,25',\t\t\tClass.forName(“org.hsqldb.jdbcDriver”);”)不,它没有。编译时错误仍然显示旧名称;您更改了其他内容。可能是编辑器有问题,我在mule studio中创建了新项目,现在得到的错误与:java.lang.ClassNotFoundException:java.lang.ClassNotFoundException:org.hsqldb.jdbc.jdbcDriver相同
java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: org.hsqldb.jdbc.JDBCDriver

    at org.python.core.Py.JavaError(Unknown Source)
    at org.python.core.Py.JavaError(Unknown Source)
    at org.python.core.PyReflectedFunction.__call__(Unknown Source)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
<mule ...
    <flow name="createFlow1" doc:name="createFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/>
        <scripting:component doc:name="Python">
            <scripting:script engine="jython" >from java.lang import Class
from java.sql import Statement, ResultSet, DriverManager

def importJar(jarFile):
    from java.net import URL, URLClassLoader
    from java.lang import ClassLoader
    from java.io import File
    m = URLClassLoader.getDeclaredMethod("addURL", [URL])
    m.accessible = 1
    m.invoke(ClassLoader.getSystemClassLoader(), [File(jarFile).toURL()])

importJar("C:/software/jar/hsqldb.jar")
importJar("C:/software/jar/sqljdbc4.jar")
Class.forName("org.hsqldb.jdbc.JDBCDriver");
connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/testdb","sa","")
statement = connection.createStatement()
resultSet = statement.executeQuery("select * from Persons");
while resultSet.next():
    print "%s (%s)" % (resultSet.getString("firstname"), resultSet.getString("city"))
</scripting:script>
        </scripting:component>
    </flow>
</mule>
    @Grapes([
     @Grab('org.slf4j:slf4j-simple:1.5.11'),
     @Grab('mysql:mysql-connector-java:5.1.12'),
     @GrabConfig(systemClassLoader = true)
    ])
    import groovy.sql.*
    ...
// Note, change jar accordingly.