2

我正在使用 JDK 1.5 使用 Apache ANT 运行一系列 JUnit。

所有使用 Oracle JDBC 驱动程序的 JUnit 都会给出如下所示的 UnsatisfiedLinkError。

它在寻找什么本机库,我该如何解决?PATH 变量应该包含什么?

java.lang.UnsatisfiedLinkError: oracle/jdbc/driver/T2CConnection.t2cGetCharSet([CI[CI[CI[CII[SLoracle/jdbc/driver/GetCharSetError;)S
        at oracle.jdbc.driver.T2CConnection.getCharSetIds(T2CConnection.java:2957)
        at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:320)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:361)
        at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:142)
        at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:79)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:196)
        at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:114)
        at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:77)
        at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:59)
        at oracle.jdbc.pool.OracleConnectionCacheImpl.getNewPoolOrXAConnection(OracleConnectionCacheImpl.java:401)
        at oracle.jdbc.pool.OracleConnectionCacheImpl.setMinLimit(OracleConnectionCacheImpl.java:752) 
4

5 回答 5

3

解决!

它实际上是一个过期的 ojdbc14.jar 文件导致了这个问题。我所做的只是更新它,现在问题已解决。类文件

谢谢

于 2008-10-07T09:04:55.120 回答
0

“如果 Java 虚拟机找不到声明为本地的方法的适当本地语言定义,则抛出此错误。”

意味着它正在寻找一个 DLL/so - 您可能正在使用 THICK 驱动程序?JDBC 2 驱动程序?

如果是,那么您可能需要添加 OCI.DLL 等。

于 2008-10-06T21:54:00.687 回答
0

您需要将 -Djava.library.path=YOUR_ORACLE_HOME\bin 作为运行时参数传递给 JRE

所以....

java [other java switches + runtime parameters] -Djava.library.path=YOUR_ORACLE_HOME\bin run-classname

此外,确保类路径中的 jar 与 $ORACLE_HOME/jdbc/lib 中的 jar 相同...如有必要,用 Oracle 覆盖 Eclipse 之一。

如果这不起作用,则有助于了解您正在运行哪个版本的 Oracle,因为这将影响您是否应该使用 classes12.jar 或 ojdbc14.jar

于 2008-10-06T19:50:25.693 回答
0

有了这个,您应该将 classes12.jar 或 classes13.jar 添加到您的类路径中(不确定名称,已经一年多了,谷歌这些......)

于 2008-10-06T16:40:01.473 回答
0

有同样的问题;通过将连接 url 从 jdbc:oracle:oci:@//localhost:1521/service_name 更改为 jdbc:oracle:thin:@//localhost:1521/service_name 来解决

于 2018-06-01T14:21:48.997 回答