2012-07-12 20 views
11

Sto riscontrando un problema durante l'esecuzione di ZeroMQ con Java utilizzando Eclipse e Windows XP. Ho installato con successo [credo] le librerie 0MQ e le associazioni Java. Le istruzioni che ho usato per farlo si trovano here.Come eseguire ZeroMQ con Java?

due file sono stati costruiti: zmq.jar e jzmq.dll. Ho inserito il file jar nel mio progetto, che ha permesso al codice di compilare OK. Ho anche impostato il file java.library.path nella directory della DLL, aggiunto la directory perf al mio progetto e aggiunto libzmq.dll al mio PATH. (Tutto secondo le istruzioni).

ho ancora ottenere la seguente eccezione che non riesco a risolvere:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\jzmq\lib\jzmq.dll: Can't find dependent libraries

Quali altre librerie è jzmq.dll dipende? Ho provato a collocare libzmq.dll ovunque, ma questo non ha aiutato. This è il codice di esempio che sto cercando di funzionare.

Grazie.

risposta

8

Inserire qualsiasi dll nella directory principale di Windows o System32 di Windows è una soluzione urgente, basta trascinarla in Dll HELL.

Quello che dovete fare è aggiungere il percorso binario ZQM nel PERCORSO di sistema.

ho compilato un 64bit ZMQ & JZMQ in un'ora, e qui è la mia struttura di cartelle:

 
c:\ZMQ\bin 
--- jzmq.dll, libzmq.dll 
c:\ZMQ\lib 
--- ZMQ.jar 

Ecco il passo:

  1. aggiungere il percorso binray in enviromennt sistema, dettaglio passi è pannello di controllo - sistema --- impostazioni avanzate, e nella scheda pop-up, trovare il 'anticipo' - 'variabili di ambiente' --- trovare il 'PATH' nel 'sistema vairiabls' e aggiungere C : \ ZMQ \ bin nel valore

  2. Aprire un prompt dos e digitare "where jzmq.dll" (non sono sicuro se where.exe esiste in XP) per confermare se è ora nel PATH.

  3. Avviare Eclipse e aprire il progetto, fare clic con il pulsante destro del mouse sul nome del progetto e selezionare nel menu 'percorso di creazione - aggiungi archivi esterni' scegliere C: \ ZMQ \ lib \ zMQ.jar.

Tutto fatto!

Nel mio PC, l'esempio funziona correttamente.

+0

1) C'è una ragione per cui vuoi compilare, piuttosto che usare il binario? – user443854

+0

Niente di speciale, solo perché tutto il mio sistema è a 64 bit include JDK, quindi mi piacerebbe compilarlo sin dall'inizio. –

+1

Quale metodo hai usato per compilare ZMQ a 64 bit e JZMQ? –

1

Ho appena riscontrato anche questo problema. Ho trovato una soluzione alternativa inserendo jzmq.dll e libzmq.dll nella cartella System32. Non mi piace come soluzione permanente, ma funziona per il momento.

+0

Grazie per la risposta. Ho solo bisogno di mettere libzmq.dll nella cartella System32 dal momento che sto facendo riferimento a jzmq.dll in Eclipse. Ha funzionato, ma ho ancora bisogno di una soluzione più permanente. – Noah

3

È necessario copiare libzmq.dll nella posizione indicata da java.library.percorso e utilizzare questo:

System.loadLibrary("libzmq") 

La ragione è che jzmq dipende libzmq così libzmq deve essere caricato prima.

+0

Questo è davvero l'approccio migliore rispetto all'utilizzo di un percorso a livello di sistema. –