2011-12-04 9 views
11

więc mam bibliotekę macierzystą innej firmy, która działa tylko w 32-bitowej maszynie JVM w oknach, osx, linux i muszę zawsze wymuszać aplikację java, aby działała w 32-bitowym trybie JVM.można zmusić 64-bitową maszynę JVM do używania trybu 32-bitowego za pomocą argumentu "-d32"?

Co się stanie, jeśli system docelowy ma tylko 64-bitową maszynę JVM, czy można wymusić uruchomienie aplikacji java w trybie 32-bitowym?

+0

@MockerTim: Kim Jong Woo powiedział, że jego aplikacja posiada natywne biblioteki strony trzeciej. Nie chodzi tu o kod bajtowy Java. – user314104

+0

IIRC, tylko wersja Java w systemie OS X obsługuje flagę '-d32'. – Mot

+0

Musisz być konkretny. Czy to jest Oracle JVM? –

Odpowiedz

11

nr

Warunki wstępne, które określone zakazać (okay, ja uniemożliwiające rozwiązanie bundle-the-JVM i montujemy-the-JVM rozwiązanie) uruchamianie aplikacji w 32-bitowym JRE. Jeśli chcesz uruchomić aplikację w 32-bitowej maszynie JVM, a natywna biblioteka strony trzeciej jest dostępna tylko jako 32-bitowa biblioteka DLL, musisz użyć 32-bitowej maszyny JVM. 64-bitowa maszyna JVM nie może załadować biblioteki 32-bitowej; nie ma trybu 32-bitowego, aby załadować takie biblioteki.

Rozwiązania obejmują:

  • Wymagaj JVM 32-bitowej do instalacji
  • Bundle 32-bitowe JVM (trzech OS-ów - to będzie dość duży ciężar)
  • Instalacja 32-bitowe JVM dla użytkownika
  • użyć innej biblioteki strona trzecia/przewróceniu własne/Znajdź w wersji 64-bitowej biblioteki strony trzeciej
+2

Na marginesie: http://stackoverflow.com/a/2925549/314104 omawia możliwość, że możesz być ciekawy, jeśli zamierzasz wdrożyć 64-bitowy cel Java. Z dwoma JVM, jednym 32-bitowym i jednym 64-bitowym, możesz używać RMI/CORBA i hostować usługę na 32-bitowej maszynie JVM, która hermetyzuje bibliotekę, i nadal możesz używać 64-bitowej maszyny JVM do swojej aplikacji, rysując korzyści z 64-bitowej maszyny wirtualnej. – user314104

+0

, więc myślę, że oznacza to, że muszę kupić instalator, który będzie pakował pożądaną maszynę JVM. – KJW

+1

To jeden ze sposobów, aby się nim zająć. Możesz również użyć instalatora, który instaluje właściwą maszynę JVM dla użytkownika z Internetu, jeśli wirtualna maszyna JVM nie istnieje na komputerze użytkownika. – user314104

1

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

Ponieważ nie ma takiego argumentu dla polecenia java, odpowiedź brzmi oczywiście "nie".

+0

Nie sądzę, że masz rację, ponieważ zarówno dokument "-d32", jak i "-d64" są tutaj dokumentowane: http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html – rozky

11

Z Java 6, nie. Z Java 7+, tak.

Zastosowanie -d32 z Java 7

+0

Tęskniłeś za tą częścią, w której powiedział: "A co jeśli system docelowy ma tylko 64-bitową maszynę JVM, czy można wymusić uruchomienie aplikacji java w trybie 32-bitowym?". -d32 nadal wymaga 32-bitowego środowiska JRE. – user314104

+0

W java 1.8 (64bit) pojawia się następujący komunikat o błędzie: 'java -d32' ' Błąd: Ta instancja Java nie obsługuje 32-bitowej maszyny JVM. Proszę zainstalować żądaną wersję. " –

+0

[To Oracle FAQ] (http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#64bit_layering) sugeruje, że opcja -d32/-d64 jest przydatna tylko w systemie Solaris ; w systemie Windows/Linux musisz zainstalować odpowiednią maszynę JVM 32- lub 64-bitową i uruchomić konkretną, którą chcesz (np. umieszczając ją w ścieżce systemowej). –

Powiązane problemy