2011-12-04 12 views
11

quindi ho una libreria nativa di terze parti che funziona solo con JVM a 32 bit su windows, osx, linux e ho bisogno di applicare sempre l'applicazione java per l'esecuzione in modalità JVM a 32 bit.possibile forzare una JVM a 64 bit per utilizzare la modalità a 32 bit tramite l'argomento "-d32"?

Che dire se il sistema di destinazione ha solo JVM a 64 bit installato, sarebbe possibile forzarlo per eseguire l'applicazione java in modalità a 32 bit?

+0

@MockerTim: Kim Jong Woo ha detto che la sua applicazione ha una libreria nativa di terze parti. Non è il bytecode Java che è in discussione qui. – user314104

+0

IIRC, solo la versione Java di OS X supporta il flag '-d32'. – Mot

+0

Devi essere specifico. È questo l'Oracle JVM? –

risposta

11

No.

I presupposti specificate vietare (ok, sto precludono la soluzione bundle-the-JVM e installare-the-JVM soluzione) l'esecuzione dell'applicazione in una a 32 bit di JRE. Se si desidera eseguire l'applicazione in una JVM a 32 bit e la libreria nativa di terze parti è disponibile solo come DLL a 32 bit, è necessario utilizzare una JVM a 32 bit. Una JVM a 64 bit non può caricare la libreria a 32 bit; non esiste una modalità a 32 bit per caricare tali librerie.

soluzioni includono:

  • Richiede la JVM a 32 bit per essere installato
  • Bundle 32 bit JVM (i tre OS - che sarà una bella grande onere)
  • Installare il 32-bit JVM per l'utente
  • Utilizzare una diversa libreria di terze parti/rotolare il proprio trovare una versione/64-bit della libreria di terze parti
+2

Come nota a margine: http://stackoverflow.com/a/2925549/314104 discute una possibilità che potresti trovare interessante se prevedi di distribuire comunque su un target Java a 64 bit. Con due JVM, una a 32 bit e una a 64 bit, è possibile utilizzare RMI/CORBA e ospitare un servizio sulla JVM a 32 bit che incapsula la libreria e si può ancora utilizzare la JVM a 64 bit per l'applicazione, disegno i vantaggi di una macchina virtuale a 64 bit. – user314104

+0

quindi credo che questo significhi che ho bisogno di acquistare un programma di installazione che impacchetta la JVM desiderata. – KJW

+1

Questo è un modo per farcela. È inoltre possibile utilizzare un programma di installazione che installa la JVM corretta per l'utente dal Web se la JVM non esiste sul computer dell'utente. – user314104

1

possible to force a 64-bit JVM to use 32-bit mode via the argument “-d32”?

Poiché non esiste un argomento del tipo java, la risposta è ovviamente "no".

+0

Non penso che tu sia corretto in quanto entrambi '-d32' e' -d64' sono documentati qui: http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html – rozky

11

Con Java 6, n. Con Java 7+, sì.

Usa -d32 con Java 7

+0

Ti sei perso la parte in cui ha detto "Che dire se il sistema di destinazione ha solo JVM a 64 bit installato, sarebbe possibile forzarlo a eseguire l'applicazione java in modalità a 32 bit?". -d32 richiede ancora un JRE a 32 bit. – user314104

+0

Con java 1.8 (64 bit) viene visualizzato il seguente messaggio di errore: 'java -d32' ' Errore: questa istanza Java non supporta una JVM a 32 bit. Installare la versione desiderata. –

+0

[Domande frequenti su Oracle] (http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#64bit_layering) suggerisce che l'opzione -d32/-d64 è utile solo su Solaris ; su Windows/Linux è necessario installare la JVM appropriata a 32 o 64 bit e eseguire specificamente quella desiderata (ad esempio includendola nel percorso di sistema). –

Problemi correlati