PDA

View Full Version : [Java] Can't find dependent libraries


superciccio14
05-05-2010, 16:14
Ciao a tutti devo usare tramite JNI delle dll di terze parti. In Eclipse ho dichiarato il path di riferimento con:

-Djava.library.path=C://...//bin

tuttavia l'errore mi permane, come fare?

Ciao!

PGI-Bis
05-05-2010, 16:36
Il messaggio non sembra essere quello della piattaforma java (che di norma dice cannot find xyz in java.library.path). Forse una delle librerie dinamiche che hai correttamente incluso richiede una terza libreria dinamica?

superciccio14
05-05-2010, 17:36
Ciao, allora ti riporto questo post che spiega correttamente la dinamica che sta dietro al problema:

http://www.eclipsezone.com/eclipse/forums/t64011.html

Fondamentalmente (fonte http://www.realityinteractive.com/rgrzywinski/archives/000219.html)

The root of the problem is that even with java.library.path set correctly, Windows will not look in anything other than its PATH for dependent libraries. This posting covers much of the problem, cause and solution. (I should point out that this is a Java problem not an Eclipse problem.) You might need to use something such as Dependency Walker to trace the set of DLL dependencies.

Io ho risolto in maniera brutale: ho copiato tutte le dll nel path della jre. Ma non è che c'è qualche soluzione migliore? :muro:

Grazie.

PGI-Bis
05-05-2010, 18:02
La fonte sbaglia, il problema non è della JVM.

Se mi trovassi al tuo posto farei due esperimenti. Uno è mettere tutte le dll nel java.library.path E caricarle esplicitamente con:

System.loadLibrary(...)

tutte, sia quelle usate da JNI che quelle usate dalle dll che usano jni.

Il secondo tentativo che farei e mettere tutte le dll nella directory di esecuzione del programma (ho un vago ricordo del fatto che la directory di esecuzione potrebbe essere automaticamente inclusa tra quelle in cui si vanno a cercare le librerie dinamiche).

superciccio14
06-05-2010, 07:42
Ciao, ma allora è un problema di Eclipse?

Allora per metterlo nella java.library.path devo agire su "build path" immagino ed includere anche tutte le dll tra i jar?

Il secondo tentativo mi è chiaro.

;)

PGI-Bis
06-05-2010, 13:15
Il problema non è di eclipse, a dire il vero non è proprio un problema :D, si tratta semplicemente di mettere dei file in una certa posizione. Secondo me al momento dell'esecuzione del programma va bene anche la directory di esecuzione ma non ho un appiglio tecnico al momento.

Non so dirti, non usandolo, dove mettere le mani in eclipse per specificare la posizione delle librerie dinamiche eventualmente richieste.

superciccio14
09-05-2010, 00:11
Niente...provo ad includere tra i jar ma niente... :/

PGI-Bis
09-05-2010, 01:50
fai una prova da linea di comando. Compili il programma, ti porti i jar in una cartella vuota, ci ficchi dentro le dll/so e vai di java -jar Programma.jar.

Altrimenti, In netbeans la cartella radice del progetto è inclusa nel path, forse funziona così anche per eclipse.

superciccio14
10-05-2010, 08:22
fai una prova da linea di comando. Compili il programma, ti porti i jar in una cartella vuota, ci ficchi dentro le dll/so e vai di java -jar Programma.jar.

Altrimenti, In netbeans la cartella radice del progetto è inclusa nel path, forse funziona così anche per eclipse.

Sì così dovrebbe andare, ma non mi risolve il problema in eclipse...che mistero! :muro:

Grazie per l'aiuto (e per la pazienza) :)