2016-12-15 10 views
5

У меня есть приложение Java SWT, которое я пытаюсь запустить с помощью Java Web Start. 32-разрядная версия отлично работает, но многие люди не могут запустить 64-разрядную версию. Они получают сообщение об ошибке, не могут запустить 64-битную библиотеку на 32-битной JVM. Я ищу Google и StackOverflow и другие, и не могу найти ответ о том, как запустить Web Start в 64-разрядной JVM.Java Web Start и 64 бит JVM

Я пробовал использовать JVM Options, (-d64, -J-d64) без всякой удачи.

Возможно ли это, или просто я ограничиваюсь 32-разрядной версией (в идеале 64 бит лучше всего, так как это приложение будет анализировать множество данных из файлов журналов, чтобы отображать их чисто)? Что мне нужно изменить в моем JNLP, чтобы это работало?

<?xml version = '1.0' encoding = 'windows-1252'?> 
<jnlp spec="1.0+" 
     codebase="http://example.com/confluence/download/attachments/212175616/" 
     href="LogMiner_64Bit.jnlp"> 
    <information> 
      <title>LogMiner 64 Bit</title> 
      <vendor> TECH</vendor> 
      <description>Parse Log messages </description> 
      <shortcut online="true"> 
       <desktop/> 
       <menu submenu="FA"/> 
      </shortcut> 
      <offline-allowed/> 
    </information> 
    <menu>64Bit</menu> 
    <security> 
      <all-permissions/> 
    </security> 
    <resources> 
      <java version="1.7+" java-vm-args="-J-d64"/> 
      <jar href="LogMiner64.jar" main="true" download="eager"/> 
    </resources> 
    <application-desc main-class="com.logMiner.ui.LogMiner"/> 
</jnlp> 

ответ

4

Вы можете создать один файл jnlp, поддерживающий обе архитектуры. Например:

<resources arch="amd64 x86_64"> 
    <jar href="LogMiner64.jar"/> 
</resources> 

<resources arch="x86 i386"> 
    <jar href="LogMiner32.jar"/> 
</resources> 

При необходимости тег ресурсов также может принимать атрибут Os, как в os="Linux", os="Mac" и os="Windows"

Таким образом, вы можете иметь один JNLP файл, который будет делать то, что нужно с уважением к родным libs, независимо от того, какая ОС и архитектура пользователь включен.

Смотрите также How to distinguish 32 bit from 64 bit java version in jnlp files

+1

Да, но это не поможет пользователям, которые имеют как 32 и 64 Bit JVM на своей машине использовать дополнительную память, которая может быть выделена. Это основная причина, по которой я пытаюсь запустить 64-разрядную версию. – user2857108

+1

JNLP будет использовать первый соответствующий ресурс. Итак, сначала элемент ресурсов с 64-битной дугой, оставит второй (32-разрядный) в качестве спада. Разумеется, вы можете удалить элемент 32-разрядных элементов arch, чтобы запретить 32-разрядную JVM. –