Dariusz Grębowiec

Dariusz Grębowiec Student,
Politechnika
Świętokrzyska w
Kielcach

Temat: sterownik jdbc - jar - problem

Witam, mam prostą aplikacje która pobiera z bazy jakąś wartość.
Wszystko działa poprawnie, gdy program uruchamiam z poziomu eclps'a.
Problem zaczyna się przy uruchamianiu z pliku jar

Wewnątrz archiwum oprócz potrzebnych klas mam stworzony katalog lib w którym znajduje się sterownik ojdbc14.jar
Problem występuje podczas próby ładowania sterownika w miejscu:

className="oracle.jdbc.OracleDriver"
Class.forName(className);


W czym może tkwić problem? Dlaczego ojdbc14.jar jest niewidoczny dla aplikacji? Może należy coś dopisać w manifest.mf?

konto usunięte

Temat: sterownik jdbc - jar - problem

Dariusz Grębowiec:
(...)
W czym może tkwić problem? Dlaczego ojdbc14.jar jest niewidoczny dla aplikacji? Może należy coś dopisać w manifest.mf?
Najprawdopodobniej brakuje odpowiedniego wpisu Class-Path właśnie w pliku manifest. Coś w stylu:

Class-Path: lib/ojdbc14.jar

Polecam:
http://java.sun.com/docs/books/tutorial/deployment/jar...
Dariusz Grębowiec

Dariusz Grębowiec Student,
Politechnika
Świętokrzyska w
Kielcach

Temat: sterownik jdbc - jar - problem

Grzegorz Hołdys:
Najprawdopodobniej brakuje odpowiedniego wpisu Class-Path właśnie w pliku manifest. Coś w stylu:

Class-Path: lib/ojdbc14.jar

Dalej to samo:/

Sprawdzałem jeszcze z "sun.jdbc.odbc.JdbcOdbcDriver"
Wtedy sterownik jest załadowany poprawnie, ale problem jest przy url.
url="jdbc:oracle:thin:@jakisAdres:1521:xe"

konto usunięte

Temat: sterownik jdbc - jar - problem

Dariusz Grębowiec:
Dalej to samo:/

Sprawdzałem jeszcze z "sun.jdbc.odbc.JdbcOdbcDriver"
Wtedy sterownik jest załadowany poprawnie, ale problem jest przy url.
url="jdbc:oracle:thin:@jakisAdres:1521:xe"
A jaki dokładnie jest komunikat, w tym pierwszym przypadku?
Dariusz Grębowiec

Dariusz Grębowiec Student,
Politechnika
Świętokrzyska w
Kielcach

Temat: sterownik jdbc - jar - problem

Grzegorz Hołdys:
Dariusz Grębowiec:
Dalej to samo:/

Sprawdzałem jeszcze z "sun.jdbc.odbc.JdbcOdbcDriver"
Wtedy sterownik jest załadowany poprawnie, ale problem jest przy url.
url="jdbc:oracle:thin:@jakisAdres:1521:xe"
A jaki dokładnie jest komunikat, w tym pierwszym przypadku?


java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at serwer.Baza.polaczZBaza(Baza.java:36)
at serwer.Serwer.<init>(Serwer.java:37)
at serwer.Serwer.main(Serwer.java:168)

konto usunięte

Temat: sterownik jdbc - jar - problem

Dariusz Grębowiec:
(...)
Eclipse najprawdopodobniej nie uruchamia programu z jara tylko z folderu bin dodając do class-path odpowiednie biblioteki. Może spróbuj zrobić to samo, tzn uruchomić aplikację z linii poleceń, ale nie korzystając z Twojego jara.Grzegorz Hołdys edytował(a) ten post dnia 09.03.10 o godzinie 18:59
Dariusz Grębowiec

Dariusz Grębowiec Student,
Politechnika
Świętokrzyska w
Kielcach

Temat: sterownik jdbc - jar - problem

bez jara jednak uruchamia się poprawnie
Czyli co należy dodać w archiwum?Dariusz Grębowiec edytował(a) ten post dnia 09.03.10 o godzinie 19:37
Krzysztof T.

Krzysztof T. Software maker

Temat: sterownik jdbc - jar - problem

Ewidentnie Grzegorz ma rację - posprzątaj w classPath. Alikacja odpalana z jara nie widzi jara z driverem.Krzysztof Torenc edytował(a) ten post dnia 10.03.10 o godzinie 18:38
Dariusz Grębowiec

Dariusz Grębowiec Student,
Politechnika
Świętokrzyska w
Kielcach

Temat: sterownik jdbc - jar - problem

odpowiedz na mój problem znalazłem pod linkiem podanym przez Grzegorza http://java.sun.com/docs/books/tutorial/deployment/jar...
a dokładnie tu :)

Note: The Class-Path header points to classes or JAR files on the local network, not JAR files within the JAR file or classes accessible over internet protocols. To load classes in JAR files within a JAR file into the class path, you must write custom code to load those classes. For example, if MyJar.jar contains another JAR file called MyUtils.jar, you cannot use the Class-Path header in MyJar.jar's manifest to load classes in MyUtils.jar into the class path.

w katalogu w którym mam jar'a utworzyłem folder lib z sterownikiem i wszystko działa poprawnie, oczywiście w manifescie trzeba dopisac Class-Path: lib/ojdbc14.jar

Można również jak mi później doradził Grzegorz wrzucić zawartość ojdbc14.jar do mojego jar'a, chociaż tego już nie sprawdzałem:)

konto usunięte

Temat: sterownik jdbc - jar - problem

To co jest w tutorialu Suna (albo już raczej Oracle) jest istotną wskazówką. Nie można sprawić aby standardowy ClassLoader wczytywał klasy zawarte w jarze wewnątrz innego jara. Wpis Class-Path: <ścieżka do jara> w MANIFEST.MF oznacza to samo co wpis -cp <ścieżka do jara> w wywołaniu javy. Dzięki niemu każdy wykonywalny jar może być uruchamiany poleceniem java -jar <cośtam.jar> a jeśli potrzebuje innych jarów, to zostaną one dodane do class-path właśnie dzięki odpowiedniemu wpisowi w MANIFEST.MF.

Następna dyskusja:

JDBC OracleXE i problem z c...




Wyślij zaproszenie do