2012-11-19 19 views
5

Sto tentando di utilizzare una dll di terze parti per un programma che sto scrivendo in java. Sfortunatamente, ha solo il supporto a 32 bit. Quando si tenta di caricare la DLL in un 64-bit VM, ho il seguente errore:Esecuzione di dll a 32 bit su computer a 64 bit in java

Can't load IA 32-bit .dll on a AMD 64-bit platform 

ho provato in esecuzione in un 32 bit VM, che funziona in Eclipse, ma quando esporto il progetto, Ho fatto lo stesso errore. Per favore aiuto!

Cordiali saluti, Ben

+0

Sei sicuro di utilizzare il java giusto al di fuori di Eclipse? Prova una java -version per verificare se viene utilizzata quella corretta (32 bit). – Burkhard

risposta

9

Non è possibile utilizzare una DLL a 32 bit in un Hotspot JVM a 64 bit. Non funzionerà. E non conosco altre JVM a 64 bit che supportano DLL a 32 bit.

Le scelte sono:

  • Passare a una a 32 bit JVM. (È possibile possibile eseguire una JVM a 32 bit su un sistema operativo a 64 bit ...)
  • Portare la DLL a 64 bit.
  • Passare a una libreria alternativa che è pura Java o ha una DLL a 64 bit.

I have tried running in a 32-bit VM, which works in eclipse, but when I export the project, I get the same error.

Che può significare solo che si esegue a 32 bit JVM per eseguire Eclipse, e una JVM a 64 bit per eseguire l'applicazione al di fuori di Eclipse. (Il problema è come si esegue l'applicazione, non come la si esporta ...)

+1

+1 Non conosco alcun sistema operativo che consenta alle applicazioni a 64 bit di caricare librerie condivise a 32 bit. Non è una limitazione di Java. –

+0

Ho trovato questa domanda e la risposta, dopo una lunga serie di ricerche, sul motivo per cui il mio codice non è riuscito. Questo l'ha risolto. Grazie mille. Ho imparato qualcosa oggi! – KjetilNordin

2

L'unico modo per utilizzare una libreria condivisa a 32 bit da una JVM a 64 bit è eseguire una JVM a 32 bit aggiuntiva e accedervi tramite RMI, JMS o qualche forma di messaggistica.

È una limitazione intrinseca dei programmi a 64 bit (non solo di Java) che non può scambiare i puntatori con una libreria a 32 bit.

Problemi correlati