java.sql.SQLException: ORA-01005: 给出的密码为空;登录被拒绝
java.sql.SQLException: ORA-01005: null password given; logon denied
我在尝试连接到数据库时遇到以下异常:
java.sql.SQLException: ORA-01005: null password given; logon denied
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:938)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:480)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:416)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:825)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:596)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
at java.sql.DriverManager.getConnection(DriverManager.java:675)
at java.sql.DriverManager.getConnection(DriverManager.java:258)
at com.alting.db.ManagerDB.getConnection(ManagerDB.java:57)
at com.alting.db.ManagerDB.openConnection(ManagerDB.java:75)
at com.alting.med.EventGenerator.exportData(EventGenerator.java:220)
at com.alting.med.Main.main(Main.java:252)
此处用于获取连接的方法:
private Connection getConnection(String url, String driverClass, String user, String password) throws ManagerDBException
{
try
{
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
throw new ManagerDBException(e.getMessage());
}
try
{
this.connection = DriverManager.getConnection(url, user, password);
}
catch (SQLException e)
{
throw new ManagerDBException(e.getMessage());
}
return this.connection;
}
但即使参数(url、密码..)被硬编码,我仍然得到异常。
你能告诉我如何解决这个问题吗?
谢谢
如果您使用空字符串密码,Oracle JDBC 将认为等同于 NULL。
我在使用 JDK6 时看到过这个错误,当切换到 JDK8(使用最新版本的 JDK8)时它消失了。
问题似乎与 java 启动命令行中的“-Djava.endorsed.dirs”参数有关。
删除这个,一切顺利。
这个post解决了我的问题
java.sql.SQLException: ORA-01005: null password given; logon denied
已将 -Doracle.jdbc.thinLogonCapability=o3
参数添加到 java 启动行。
在我的例子中,(所有 jar,包括 ojdbc8 都在文件夹 ./libs 中),我从
java -Djava.ext.dir=libs/ MainClass
至
java -cp "./libs/*" MainClass
那么问题就解决了
当外部化所有 jar 时,我遇到了与 spring 启动应用程序相同的问题。 java.ext.dirs 不适用于 oracle 驱动程序 19.x,抛出“java.sql.SQLException:ORA-01005:给出空密码;登录被拒绝”。
该应用程序在 fat-jar.
下运行良好
我能够通过“导出 CLASSPATH”解决问题。
我在尝试连接到数据库时遇到以下异常:
java.sql.SQLException: ORA-01005: null password given; logon denied
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:938)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:480)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:416)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:825)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:596)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
at java.sql.DriverManager.getConnection(DriverManager.java:675)
at java.sql.DriverManager.getConnection(DriverManager.java:258)
at com.alting.db.ManagerDB.getConnection(ManagerDB.java:57)
at com.alting.db.ManagerDB.openConnection(ManagerDB.java:75)
at com.alting.med.EventGenerator.exportData(EventGenerator.java:220)
at com.alting.med.Main.main(Main.java:252)
此处用于获取连接的方法:
private Connection getConnection(String url, String driverClass, String user, String password) throws ManagerDBException
{
try
{
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
throw new ManagerDBException(e.getMessage());
}
try
{
this.connection = DriverManager.getConnection(url, user, password);
}
catch (SQLException e)
{
throw new ManagerDBException(e.getMessage());
}
return this.connection;
}
但即使参数(url、密码..)被硬编码,我仍然得到异常。
你能告诉我如何解决这个问题吗? 谢谢
如果您使用空字符串密码,Oracle JDBC 将认为等同于 NULL。
我在使用 JDK6 时看到过这个错误,当切换到 JDK8(使用最新版本的 JDK8)时它消失了。
问题似乎与 java 启动命令行中的“-Djava.endorsed.dirs”参数有关。
删除这个,一切顺利。
这个post解决了我的问题
java.sql.SQLException: ORA-01005: null password given; logon denied
已将 -Doracle.jdbc.thinLogonCapability=o3
参数添加到 java 启动行。
在我的例子中,(所有 jar,包括 ojdbc8 都在文件夹 ./libs 中),我从
java -Djava.ext.dir=libs/ MainClass
至
java -cp "./libs/*" MainClass
那么问题就解决了
当外部化所有 jar 时,我遇到了与 spring 启动应用程序相同的问题。 java.ext.dirs 不适用于 oracle 驱动程序 19.x,抛出“java.sql.SQLException:ORA-01005:给出空密码;登录被拒绝”。 该应用程序在 fat-jar.
下运行良好我能够通过“导出 CLASSPATH”解决问题。