2012-02-22 2 views
17

64 비트 데비안 민트 머신에서 32 비트 핫스팟 JVM을 실행하려고합니다. 첫눈에 당신까지 모든 작품 스윙을 사용하여 뭔가를 실행하려고합니다 : 64 비트 Linux에서 32 비트 JVM을 실행하는 방법은 무엇입니까?

java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so: 
libXext.so.6: cannot open shared object file: No such file or directory 

는 추가하는 라이브러리 경로 : export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu.

그러나 다음이 오류를 제공합니다 :

java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so: 
libXext.so.6: wrong ELF class: ELFCLASS64 

여기에 수행해야하는 다른 어떤 생각?

+5

32 비트 프로세스는 64 비트 라이브러리를로드 할 수 없습니다. 32 비트 호환성 라이브러리를 설치해야합니다. 우분투에서는'ia32-libs' 패키지를 설치해야합니다. 데비안에 상응하는 것이 무엇인지 모릅니다. – Jesper

+1

* 왜 64 비트 머신에서 32 비트 JVM을 다시 실행하려고합니까? – Marcelo

+0

32 비트 libXext를 찾으십니까? –

답변

15

32 비트 JVM을 사용하려면 32 비트 호환성 라이브러리가 설치되어 있어야합니다. 두 번째 오류 메시지는 32 비트 JVM 프로세스가 64 비트 라이브러리를로드하려고한다는 것을 의미합니다. 그게 작동하지 않습니다.

우분투에서는 ia32-libs 패키지를 설치해야합니다. 여기에는 64 비트 우분투 용 32 비트 호환성 라이브러리가 포함되어 있습니다.

UPDATE : 우분투 13.10은 libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386ia32-libs을 대체 멀티 아치를 소개했다. 출처 : https://stackoverflow.com/a/10473415/14731

3

32 비트 참조를 사용하려면 64 비트 JVM을 사용하십시오. 그것은 23

http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html

@Hot 핥는 댓글 자바 6 업데이트에서 (수 일반적으로 이상의 32 비트 프로그램)를 GB의 메모리 (32)에 대해 기본적으로 32 비트 참조를 사용하는 IBM JVM 수 "32/64 비트 모드"로 최대 68GB까지 액세스

이 양을 초과하여 사용해야하는 경우 (또는 실제로 그와 같은 것), 힙 메모리를 사용합니다. 이렇게하면 전체 GC 시간을 제어 할 수 있으며 항상 32 비트 참조를 사용할 수 있습니다.

+0

고마워! 나는 "압축 된 oops"가 기본적으로 활성화되어 있다는 것을 몰랐습니다. 이것이 바로 Netbeans에서 전혀 차이가없는 이유입니다. 이미 32 비트 참조를 사용하고있었습니다. 그래서 결국에는 아무런 차이가 없습니다. Netbeans 지원 팀이 32 비트 JVM을 실행하도록 요청한 이상한 점은 ... –

+0

5 ~ 10 년이 지나치는 SO에 대한 조언을 볼 때 종종 놀라곤합니다. ;) 64 비트 프로세스가 64 비트 포인터를 사용한다고 가정하는 것은 당연합니다. C에서 가장 효율적이라고 가정합니다. –

+0

나는 그것이 어떤면에서는 더 좋을 것이라고 생각한다. 그러나 나는 클라이언트 JVM (32 비트)이 다소 빠르다고 말하는 사람들이 많이있다. 그리고 최근의 책인 "Java Performance"에서는 캐시가 크기가 작아서 캐시가 더 많은 항목을 포함하고 있기 때문에 이것이 사실이라고합니다. 따라서 더 나은 적중률. 따라서 성능이 향상됩니다. 나는 항상 압축 된 상태로 달리고있다. 그러나 지금까지는 32GB 이하로 기본적으로 적용되었습니다. –

6

난에 CentOS 6.4와 비슷한 문제가 있었다 용액을 (루트로)가 IA32 - libs와 동등한를 설치했다 : yum install glibc.i686 libXext.i686 libXtst.i686

+0

위 내용을 시도했지만 패키지를 사용할 수 없습니다. glibc.i686 패키지를 사용할 수 없습니다. libXext.i686 패키지를 사용할 수 없습니다. libXtst.i686 패키지를 사용할 수 없습니다. –

+0

CentOS/RedHat/Fedora 사용자에게 감사드립니다. 최신 JRE/JDK의 경우 libgcc.i686 패키지도 필요합니다. – Dime

12

난 그냥 내 32을 유지하고 싶어 우분투 14.04에 동일한 문제가 있었다 64 비트 설치에서 Oracle Java를 사용합니다. Ubuntu 13.10부터 ia32-libs가 사라졌습니다. 이제 glib 대답은 "필요한 i386 라이브러리 만 다운로드하면됩니다". 불행히도, 어떤 도서관인지 쉽게 알 수있는 방법은없는 것 같습니다.

간단한 해결책 I386 라이브러리 다수에 끌어

sudo apt-get install openjdk-7-jdk:i386 

32 비트 오픈 JDK를 설치하는 것이다. 원한다면 OpenJDK를 다시 제거 할 수 있습니다. 그러나 우연히 라이브러리를 자동으로 이동시키지 않도록 제 위치에 두었습니다.

Oracle JDK를 PATH에 넣으면 Eclipse와 NetBeans가 정상적으로 시작됩니다.

+0

그 대답 Cayhorstmann을 위해 고마워. 내 베이컨을 구해 줬어! – mbrinson

+0

ia32-libs가 더 이상 존재하지 않습니다. 이 하나가 문제를 해결했습니다. 감사합니다! –

관련 문제