Java Mule ClassNotFoundException:jdbcDriver
我使用的是hsqldb2.3.2.jar。这是因为类的名称(在2.x中)是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
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.