gpt4 book ai didi

java - 请告知异常(exception)情况

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:01 24 4
gpt4 key购买 nike

任何人都可以告诉我这个异常是什么意思,它令人困惑,因为我尝试了所有可能的方法来更改 keystore 的路径.. 不起作用。

环境:ORACLE数据库服务器,配置SSL

Exception in thread "main" java.sql.SQLException: Io exception: 

java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
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:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at project1.JDBCSSLTest.getConnection(JDBCSSLTest.java:42)
at project1.JDBCSSLTest.run(JDBCSSLTest.java:22)
at project1.JDBCSSLTest.main(JDBCSSLTest.java:49)

我正在使用的 java 类是。

package project1;

import java.security.Security;

import java.sql.Connection;
import java.sql.SQLException;

import java.sql.*;
import oracle.jdbc.OracleDriver;

public class JDBCSSLTest
{

public JDBCSSLTest()
{
// must enable this
Security.addProvider(new oracle.security.pki.OraclePKIProvider());
}

public void run () throws SQLException
{
Connection conn = getConnection();
System.out.println("Auto Commit = " + conn.getAutoCommit());
conn.close();
}

public static Connection getConnection() throws SQLException
{
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)" +
"(HOST=localhost)(PORT=2484))" +
"(CONNECT_DATA=(SERVICE_NAME=orcl)))";
java.util.Properties props = new java.util.Properties();

props.setProperty("user", "system");
props.setProperty("password", "weblogic");
props.setProperty("javax.net.ssl.trustStore","C://lib//ewallet.p12");
props.setProperty("javax.net.ssl.trustStoreType","PKCS12");
props.setProperty("javax.net.ssl.trustStorePassword","weblogic123");
props.setProperty("oracle.net.ssl_cipher_suites", "SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA");

DriverManager.registerDriver(new OracleDriver());
Connection conn = DriverManager.getConnection(url, props);
return conn;
}

public static void main(String[] args) throws SQLException
{
JDBCSSLTest dSTest = new JDBCSSLTest();
dSTest.run();
System.out.println("all done..");
}
}

最佳答案

来自 this Oracle document :

“java.sql.SQLException: Io exception: java.lang.RuntimeException:
Unexpected error: java.security.InvalidAlgorithmParameterException:
the trustAnchors parameter must be non-empty”:

if you are using PKCS12 wallets and Oracle’s PKI provider isn’t properly enabled. This exception comes from the PKCS12 implementation from Sun (Sun’s PKI provider) which isn’t compatible with Oracle wallets. Oracle’s PKI provider must be properly enabled for PKCS12 either statically or dynamically if you use PKCS12 wallets.

启用 PKI 提供程序在同一文档的第 2.2.4 节中进行了描述。

关于java - 请告知异常(exception)情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3744582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com