WSO2使用DBLookup Mediator连接Oracle数据库遇驱动缺失报错求助
问题描述
尝试通过WSO2的DBLookup Mediator连接Oracle数据库时,触发如下报错:
java.sql.SQLException: no suitable driver found for jdbc:oracle
日志详情
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@192.168.0.109:1521/CMSUAT3 No suitable driver found for jdbc:oracle:thin:@192.168.0.109:1521/CMSUAT3 java.base/java.lang.Thread.getStackTrace(Thread.java:1607) org.wso2.integrationstudio.gmf.esb.presentation.DependencyProvider.createMultiStatus(DependencyProvider.java:1657) org.wso2.integrationstudio.gmf.esb.presentation.DependencyProvider.testConnecton(DependencyProvider.java:1354) org.wso2.integrationstudio.gmf.esb.presentation.DependencyProvider$10.handleEvent(DependencyProvider.java:954) org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) org.eclipse.swt.widgets.Display.sendEvent(Display.java:4243) org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1060) org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4060) org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3632) org.wso2.integrationstudio.gmf.esb.presentation.DependencyProvider.open(DependencyProvider.java:1037) org.wso2.integrationstudio.gmf.esb.parts.forms.DBLookupMediatorPropertiesEditionPartForm$10$1$1.run(DBLookupMediatorPropertiesEditionPartForm.java:702) org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4035) org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3635) org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1154) org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1045) org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644) org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551) org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156) org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.base/java.lang.reflect.Method.invoke(Method.java:566) org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659) org.eclipse.equinox.launcher.Main.basicRun(Main.java:596) org.eclipse.equinox.launcher.Main.run(Main.java:1467)
使用的驱动:ojdbc11.jar
解决方案
该报错核心原因是WSO2环境无法找到Oracle JDBC驱动,可按以下步骤排查修复:
驱动放置路径校验
- 开发环境(WSO2 Integration Studio):将
ojdbc11.jar放入<Integration_Studio_Home>/runtime/lib,重启IDE;同时右键项目→Properties→Java Build Path→Libraries→Add External JARs,添加该驱动到项目依赖。 - 运行环境(WSO2 EI/APIM):将驱动放入
<WSO2_Home>/repository/components/lib,重启WSO2服务器。
- 开发环境(WSO2 Integration Studio):将
JDBC URL格式验证
当前URL为jdbc:oracle:thin:@192.168.0.109:1521/CMSUAT3,属于Oracle 12c+服务名格式;若数据库使用SID,需修改为jdbc:oracle:thin:@192.168.0.109:1521:CMSUAT3(斜杠替换为冒号)。JDK版本兼容性检查
ojdbc11.jar适配JDK 11及以上版本,执行java -version确认WSO2环境使用的JDK版本符合要求;若为JDK8,需更换为ojdbc8.jar。驱动完整性校验
重新从官方渠道下载ojdbc11.jar,执行jar tf ojdbc11.jar检查是否包含oracle/jdbc/OracleDriver.class文件,排除文件损坏问题。
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

