【问题标题】:Eclipse Project ORA-28040 Exception Despite Updated OJDBC尽管更新了 OJDBC,Eclipse 项目 ORA-28040 异常
【发布时间】:2022-01-11 16:12:14
【问题描述】:

我加入了一个新项目,我正在通过 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 的数据源资源管理器中使用数据库连接,所以我的项目似乎有问题。

如果有什么我可以澄清的,请告诉我。

【问题讨论】:

  • 请编辑您的问题以包含您收到的错误消息的全文。谢谢。

标签: java oracle eclipse jdb


【解决方案1】:

原来旧的 ojdbc 也在引用的库中,所以我需要从那里删除它以使其工作。仅仅在构建路径上替换它是不够的。

【讨论】:

    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 2021-08-29
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    相关资源
    最近更新 更多