에서 가능한 중복 : 내 자바 응용 프로그램에서
Java : switching between dll depends on system architecture (32/64)로드 32 또는 64 비트 JNI 라이브러리 자바
내가 32 비트 및 64 비트 사용할 수있는 JNI 라이브러리가 필요합니다. 두 개의 서로 다른 버전의 응용 프로그램을 제공하고 싶지 않으므로 두 라이브러리로 응용 프로그램을 제공하려면 응용 프로그램이로드 할 라이브러리 (foobar32.so 또는 foobar64.so)를 결정해야합니다. 어떻게해야합니까?
첫 번째를로드하려고 시도했는데이 예외가 발생하면 두 번째로드가 발생하지만 추한 것처럼 들립니다.
대신 32 비트 Java 또는 64 비트 Java를 사용하여 응용 프로그램을 실행하는지 확인할 수있는 시스템 속성이 있습니까? 일부 os.arch
속성을 알고 있지만 반환 값은 this answer에 따라 예측할 수없는 것으로 보입니다.
그렇다면 32 비트 또는 64 비트 JNI 라이브러리를로드할지 여부를 응용 프로그램이 결정하도록하는 가장 좋은 방법은 무엇입니까?
신청서를 번들하는 방법은 무엇입니까? OSGi에서는 OS 아키텍처에 따라 특정 번들이나 번들 조각 만로드 할 수 있습니다. 플랫폼 별 기능이 제공되는 방식입니다. OSGi 사용을 고려해 주시겠습니까? – katsharp
당신의 주된 관심사는 OS가 아니라 실행 파일입니다 : 64 비트 OS에서 32 비트 실행 파일을 실행할 수 있지만 여전히 32 비트이고 필요한 라이브러리는 64가 아닌 32 비트입니다. 가상의 경우 32 비트에서 64 비트 실행 파일을 실행할 수 있습니다 OS를 사용하려면 64 비트 라이브러리가 필요합니다. 이것은 przemelek가 설명하려고 시도하는 것입니다. 'os.arch'는 현재 존재하는 한 실질적으로 아무 것도 쓸만합니다. 내 대답은 Unsafe가있을 것이지만 일부 시스템 속성은 그렇지 않을 수도 있습니다. – bestsss