views:

2055

answers:

3

When I try to run Java application, I receive the following error:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no ocijdbc9 in java.library.path

I don't have a file "ocijdbc9.*" on my PC, but I have "ocijdbc10.dll" in %ORACLE_HOME%\bin.

%ORACLE_HOME% is correctly specified, so I think the problem is that the application is searching for the wrong version (9 instead of 10).

Both Oracle and Java Builder are freshly installed, so the problem may be in project preferences? Do you have any ideas on how to search for the place where the wrong version is specified?

+2  A: 

You're missing a file from your java CLASSPATH.

You need to add the OCI jar to your classpath.

For my oracle 10.0.2 install on windows it's located in

%ORACLE_HOME%\jdbc\lib\ojdbc14.jar

If your application requires ocijdbc9 then you'll have to download it from somewhere and add it to the CLASSPATH. I don't know where to download it from, try the oracle site

Glen
Adding of 'ojdbc14.jar' to classpath solved the issue. Thanks.
Delynx
A: 

You need to pass -Djava.library.path=YOUR_ORACLE_HOME\bin to the JRE as a runtime parameter

So....

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

an additional tip: if you're using oci jdbc urls; it is always better to use the jar library of your oracle client version.

please check this address for these libraries: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html

for example if your client is Oracle 10.2.0.4, then you'd better use this client's ojdbc14.jar for java >= 1.4 and classes12.jar for java <= 1.3

note that until Oracle 11, jdbc libraries have the same names in every version such as ojdbc14.jar and classes12.jar.

matafleur