>

64 비트와 32 비트 환경 모두에서 Java 응용 프로그램을 개발하기 때문에 개발 환경에서 Java VM을 모두 유지 관리합니다. 내가 개발 한 JNLP 응용 프로그램은 32 비트 환경이 필요한 dll을 호출하기 때문에 32 비트 환경에서 실행해야합니다.

JNLP는 대부분 32 비트 환경에서 실행해야한다는 것을 "알고있는"것처럼 보이지만 운이 좋았다고 생각합니다. 64 비트 Java를 버전 10으로 업그레이드 할 때 JNLP가 64 비트 환경에서 실행을 시도했기 때문에 JNLP가 실패했습니다. 64 비트 환경을 버전 1.8 (32 비트 환경과 동일한 버전)로 복원하면 응용 프로그램이 32 비트 환경에서 다시 실행되기 시작했습니다.

그러나 이것을 어떻게 알 수 있습니까? Java 버전이 동일한 경우 JNLP 애플리케이션의 일부 특성이 32 비트 환경으로 기본 설정됩니까?

빌드를 수행 할 때 환경에서 무언가를 설정하거나 특정 JRE 라이브러리를 지정하여 JNLP가 32 비트 환경에서 실행되도록 보장 할 수있는 방법이 있습니까?

  • 답변 # 1

    와이즈 비즈

    짧은 대답은 분명히 : 아니요

    <시간>

    다음은 JNLP 사양 파일에 사용될 버전을지정하는 방법을 설명합니다 :

    jnlp 파일에서 32 비트와 64 비트 Java 버전을 구별하는 방법

    32 비트 아키텍처의 리소스를만 지정하여 32 비트 JVM을 강제로 선택할 수 있어야합니다. 예 :

    Is there a way to guarantee that the JNLP will run in a 32 bit environment by setting something in the environment or specifying a particular JRE library when I do my build?

    (개발/테스트 목적으로 64 비트 리소스를 제외한 개발 JNLP 파일을 사용할 수 있습니다 ...)

    그러나 JNLP 클라이언트가 사용 가능한 경우 JNLP 클라이언트가 64 비트 JVM을 사용하고 64 비트 자원이 누락되었다고 불평하는 경우에는 도움이되지 않습니다.

    JNLP 클라이언트/런처가 선택하는 방식을 수정하는 것이 가능할 수 있습니다. 그러나 이는 사용중인 실행기에 따라 다릅니다. 예 : 사용중인 Java 플러그인 및 특정 JRE를 사용하도록 구성 할 수 있는지 여부에 따라 달라질 수 있습니다.

    일부 JNLP 클라이언트가 32 비트 또는 64 비트 JRE 사용 여부를 결정하는 방식에 알려진 버그/일관성이없는 것으로 나타났습니다.

    그러나 JNLP 및 JavaWebstart는 Java 9부터 더 이상 사용되지 않으므로 대체 방법을 찾고있을 것입니다. 특히 귀하/귀하의 클라이언트가 Oracle Java 상용 지원에 대한 비용을 지불하지 않으려는 경우

  • 답변 # 2

    다양한 실험을 수행 한 결과, 다음과 같은 사실을 발견했습니다.

    먼저, 특정 아키텍처 (예 : x86)를 허용하도록 JNLP 설치의 XML에서 Resources 요소를 수정하면 작동하지 않으며 실제로 오류가 발생합니다.

    두 번째로, 1.8보다 큰 jvm을 설치하면 해당 JVM을 사용하는 JNLP가 발생합니다. Oracle은 1.8 이상의 32 비트 JVM을 지원하지 않기 때문에 JNLP 애플리케이션이 64 비트 환경에서 실행됩니다. 분명히 JNLP는 사용 가능한 최신 버전에서 실행됩니다. 내 컴퓨터에서 적어도 Java의 동작이 이것을 제안하는 것 같습니다.

    동일한 머신에서 32 비트 및 64 비트 jvm을 모두 실행하는 경우 여기에 문서화 된대로 bugs.openjdk.java.net/browse/JDK-8029922

    세 번째,이 jvm을 설치하는 순서 문제. JNLP 애플리케이션이 32 비트 jvm을 선택하도록하려면 해당 버전의 Java 초를 설치해야합니다. 즉, JNLP는 jvm의 비트 크기에 관계없이 마지막으로 설치된 Java 버전을 적절하게 실행합니다 (JVM이 처음 설치 한 경우는 제외). 그리고 나중 릴리스는 JNLP가 실행되는 릴리스입니다.

    Oracle은 더 이상 버전 1.8 이후에 32 비트 버전의 Java를 지원하지 않는 것 같으므로, 32 비트 환경에서 JNLP를 실행하려면 Java 버전 1.8 또는 EARLIER를 설치해야합니다.

    Webstart와 JNLP는 더 이상 사용되지 않으므로 위의 질문에 대한 답변에서 알 수 있듯이 Webstart 이외의 Java 응용 프로그램을 배포하기위한 다른 기술을 고려해야합니다.

    <resources os="Linux" arch="x86"> <nativelib href="lwjgl-x86-linux.jar"/> </resources> <resources os="Linux" arch="i386"> <nativelib href="lwjgl-x86-linux.jar"/> </resources>

  • 이전 javascript - 두 열을 모두 편집하면 이미지가 영구적으로 유지됩니다
  • 다음 C 코드 오류가 친구의 컴퓨터에서는 발생하지만 내 컴퓨터에서는 그렇지 않습니다