Hallo ich möchte eine Abfrage auf einer Oracle Datenbank machen.
Ich denke das etwas mit dem Treiber nicht stimmt, habe aber schon
mehreres ausprobiert.
Ich bekomme folgende Fehlermeldung:
Exception in thread „main“ java.lang.UnsatisfiedLinkError: get_env_handle
at oracle.jdbc.oci8.OCIEnv.get_env_handle(Native Method)
at oracle.jdbc.oci8.OCIEnv.getEnvHandle(OCIEnv.java:70)
at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:359)
at oracle.jdbc.driver.OracleConnection.(OracleConnection.java:252)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at OracleAbfrage.main(OracleAbfrage.java:26)
Benutzt du ein IDE zur Entwickelung ? Hat das IDE evtl. den Classpath umgesetzt ?
Die Fehlermeldung kommt wenn der Treiber nicht vollständig installiert wurde oder aber in eine andere JVM installiert wurde als das IDE intern benutzt.
Ich benutze Eclipse und habe die Treiberdatei „classes12.zip“ in den Ordner …\eclipse\jre\lib\ext hinein kopiert.
Ich sehe in Eclipse selbst auch das Paket und die Klassen von classes12.
Ich benutze Eclipse und habe die Treiberdatei „classes12.zip“
in den Ordner …\eclipse\jre\lib\ext hinein kopiert.
Ich sehe in Eclipse selbst auch das Paket und die Klassen von
classes12.
Muss noch etwas machen???
So als Idee: die JVM (oder JDK) von Oracle unter Eclipse mit Windows-Preferences-Java-… bekannt machen und als Compiler verwenden.
Hallo habe es mit verschiedenen SDK Versionen ausprobiert.
Bekomme dort aber fast die gleiche Fehlermeldung, nämlich:
java.lang.UnsatisfiedLinkError: get_env_handle
at oracle.jdbc.oci8.OCIEnv.getEnvHandle(OCIEnv.java:70)
at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:359)
at oracle.jdbc.driver.OracleConnection.(OracleConnection.java:252)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java, Compiled Code)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
at java.sql.DriverManager.getConnection(DriverManager.java:450)
at java.sql.DriverManager.getConnection(DriverManager.java:130)
at OracleAbfrage.main(OracleAbfrage.java, Compiled Code)
Exception in thread „main“
Hat noch jemand eine Idee???
Bin schon fast am verzweifeln.
Viele Grüße
Andreas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Wird die Connectionurl richtig gesetzt? User und passwort sind auch richtig? oder in der Url enthalten?
Am Treiber sollte es nicht liegen, die Klasse wird auf jedem Fall einmal gesetzt.
Vllt kannst du ja auch ein bisschen code posten.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
es gibt doch schon einen neueren Treiber odbc14.jar oder so ähnlich. ich würde dir empfehlen diesen einfach in den classpath deines projektes unter eclipse einzubinden.
Zu Testzwecken hatte ich erstmal nur folgendes ausprobiert:
class DbTest {
Sehr interessant.
Und mit welchem Ergebnis?
Wenn Du eine 1.2 oder 1.3 JVM verwendest, dann ist classes12 wohl das richtige Paket.
Für 1.4 oder 1.5 würde ich zu dem 14-jar greifen, das oben erwähnt wurde.
Ganz vergessen beim ersten Posting:
es gibt ja auch den Oracle JDeveloper frei erhältlich.
Sieht so ähnlich aus wie Eclipse und enthält alles was man zum Programmieren mit Java und Oracle so braucht
Die Registrierung unter http://otn.oracle.com -> http://www.oracle.com/technology/products/jdev/index…
ist übrigens kostenfrei.
Dafür sind gelegentlich ein paar Updates fällig…
Zu Testzwecken hatte ich erstmal nur folgendes ausprobiert:
class DbTest {
public static void main(String[] args){
try {
Class.forName( "oracle.jdbc.driver.OracleDriver" );
}
catch ( ClassNotFoundException e ) {
System.out.println( "Fehler" + e );
return;
}
}
}
Tritt der Fehler mit diesem Code auf?
java.lang.UnsatisfiedLinkError: get\_env\_handle
at oracle.jdbc.oci8.OCIEnv.getEnvHandle(OCIEnv.java:70)
at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:359)
deutet nämlich darauf hin, daß du den OCI Treiber verwendest und die notwendige DLL nicht gefunden wird, in deinem Codefragment wird aber noch gar keine Verbindung aufgebaut, es ist IMHO noch nicht klar ob der Thin oder OCI Treiber verwendet wird.
Der Thin Treiber benötigt keine DLL, da kann ein UnsatisfiedLinkError eigentlich auch nicht auftreten, wie sieht dein weiterer Code aus?
Ich habe es mal mit den anderen Treibern und sdk versionen ausprobiert der einige unterschied der Vorkam war das bei manchen jetzt folgende Fehlermeldung kommt.
java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3134)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3130)
at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:220)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:413)
at oracle.jdbc.driver.T2CConnection.(T2CConnection.java:131)
at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:77)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at OracleAbfrage.main(OracleAbfrage.java:26)
Exception in thread „main“
Laufen tut es leider immer noch nicht
Noch jemand ne idee was man in Eclipse anders machen müsste?
java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1517)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3135)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3131)
at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:221)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:414)
at oracle.jdbc.driver.T2CConnection.(T2CConnection.java:132)
at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:78)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at OracleAbfrage.main(OracleAbfrage.java:26)
hast du schon mal so versucht?
jdbc:oracle:thin:[user]/[pwd]@[host]:[port]:[sid]
Ich würde wirklich mal den String ausgeben!!! An Eclipse wird es nicht liegen! Würde Eclipse die Klasse nicht finden, würdest du eine ClassNotFoundException bekommen!
…du denkst an einem funktionierenden Programm rum, das ich als Beispiel, wie es funktioniert eingestellt habe. Der Fragesteller steht weiter oben mit seinem Problem.
(Es ist etwas verwirrend, weil ich vergessen habe, die Properties durch Strings zu ersetzen)
Gruß
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]