[英]Eclipse Project ORA-28040 Exception Despite Updated OJDBC
我加入了一个新项目,我正在通过 Eclipse 进行工作。 作为参考,服务器在 Oracle 19c 上运行,并且由不同的团队管理。
我尝试将项目放到我的 Tomcat 服务器上并连接到它,但它给了我一个 ORA-28040 异常。 这是确切的异常消息:
2022/1/11 11:08:45.847 [TRACE] com.nuorbit.persistence.DBConnection Opening DriverManager connection
2022/1/11 11:08:46.402 [TRACE] com.nuorbit.persistence.DBConnection Opening DriverManager connection
2022/1/11 11:08:46.946 [ERROR] com.nuorbit.utils.Errors java.sql.SQLException: ORA-28040: No matching authentication protocol
java.sql.SQLException: ORA-28040: No matching authentication protocol
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOsesskey(T4CTTIoauthenticate.java:294)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:357)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.nuorbit.persistence.DBConnection.getConnectionByDriverManager(DBConnection.java:113)
at com.nuorbit.persistence.DBConnection.getConnection(DBConnection.java:77)
at com.nuorbit.persistence.DBConnection.getConnection(DBConnection.java:65)
at com.nuorbit.utils.Settings.getSetting(Settings.java:116)
at com.nuorbit.servlet.Startup.init(Startup.java:22)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1152)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1097)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:990)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4952)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5266)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我四处寻找可能导致这种情况的原因,并遇到了两个常见的答案:替换我的 ojdbc jar 文件,或通过添加以下片段来更改服务器的 sqlnet.ora 文件:
SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
由于服务器不在我的控制之下,我尝试做前者。 我进入构建路径,并将 ojdbc14.jar 替换为 ojdbc8-19.3.0.0.jar。 但是,这仍然会导致相同的错误,所以我不确定我做错了什么。
作为参考,我可以使用 SQL Developer 连接到服务器,以及在 Eclipse 的数据源资源管理器中使用数据库连接,所以我的项目似乎有问题。
如果有什么我可以澄清的,请告诉我。
原来旧的 ojdbc 也在引用的库中,所以我需要从那里删除它才能让它工作。 仅仅在构建路径上替换它是不够的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.