Witam
Mam następujący problem: posiadam plik DOK.jar który jest poprawny i działa po dwukrotnym kliknięciu. Jest to niewielka aplikacja, która łączy się z bazą danych Oracle. W pliku manifest mam poprawnie ustawione odwołanie do folderu lib w którym mam ojdbc14.jar do połączenia z Oracle. Problem jest gdy wywołuję ten program z poziomu Delphi. Sama aplikacja się uruchamia, natomiast nie następuje połączenie z bazą. Tak jakby nie widział bibliotek z katalogu lib. Ma ktoś może pomysł jak temu zaradzić?? Poniżej kod z Delphi wywołujący mój program DOK.jar:
ShellExecute(self.WindowHandle,'open','javaw','-jar D:\dist\DOK.jar',nil,SW_NORMAL);
Za wszelką pomoc będę wdzięczny
Pozdrawiam
spróbuj |-| --- tu spacja
ShellExecute(self.WindowHandle,'open','javaw',' -jar D:\dist\DOK.jar',nil,SW_NORMAL);
lub
ShellExecute(self.WindowHandle,'open','javaw -jar D:\dist\DOK.jar',nil ,nil,SW_NORMAL);
albo WinExec("javaw -jar D:\dist\DOK.jar",True);
o ile masz w system32 plik javaw
Niestety żadne z tych rozwiązań nie pomogło...
Spróbuj tak:
'javaw -jar -cp nazwa_katalogu_z_libami D:\dist\DOK.jar'
Używaj przejściowo polecenia java (nie javaw), zobaczysz na konsoli komunikaty o błędach.
'javaw -cp D:\dist\lib\ -jar d:\dist\DOK.jar' również nie działa. Stosując polecenie 'java' otrzymałem komunikat, że nie może odnaleźć odpowiedniej procedury w folderze C:\Oracle\IC102\ocijdbc10.dll....
Żeby było ciekawiej to wywołując powyższe polecenie bezpośrednio z konsoli Windowsa, wszystko uruchamia się prawidłowo, bez żadnych błędów. Coś muszę dalej mieć nie tak niestety...
bezpośrednio z konsoli Windowsa,
Jaki jest wówczas katalog bieżący?
Niezależnie od ustawionego katalogu bieżącego (c:, d: czy jakikolwiek folder), aplikacja bezpośrednio z cmd się uruchomi i działa poprawnie
Wypróbuj to: wpisz w konsoli polecenie SET, zobacz jaka jest wartość zmiennej środowiskowej CLASSPATH, i to co zobaczysz wpisz po cp
ShellExecute(self.WindowHandle,'open','java -jar -cp %CLASSPATH% D:\dist\DOK.jar',nil ,nil,SW_NORMAL);
Zmiennej classpath w systemie nie mam ustawionej
Spróbowałem też obejść problem inaczej. Napisałem plik bat który mi uruchamia aplikację DOK.jar. Plik bat działa poprawnie bo po jego uruchomieniu, zostaje również otworzona aplikacja DOK.jar. Uruchamiam tego bata z poziomu Delphi. O ile wcześniej (odwołując się bezpośrednio do pliku DOK.jar) pojawiało się okno logowania, ale nie można było ustanowić połączenia, tak teraz pojawia się tylko błąd Java Virtual Machine o treści ERROR: Unable to access jarfile DOK.jar. Co jest źle??
Co jest źle??
Bieżący katalog jest zły, ustaw taki sam jak w batchu i wywołuj tym samym poleceniem i ma działać.. A jak nie działa to pewnie masz źle jave zainstalowaną.
Btw. mi się wydaje że to jest bardziej pytanie do programistów java. bo do delphi niewiele w sumie ma.