2016-12-15 1 views
5

J'ai une application SWT Java que j'essaie de lancer via Java Web Start. La version 32 bits fonctionne bien, mais beaucoup de gens ne peuvent pas lancer la version 64 bits. Ils reçoivent une erreur indiquant qu'ils ne peuvent pas exécuter une bibliothèque 64 bits sur une machine virtuelle Java 32 bits. J'ai recherché Google et StackOverflow et d'autres et je ne trouve pas de réponse sur la façon de lancer Web Start dans une JVM 64 bits.Java Web Start et JVM 64 bits

J'ai essayé d'utiliser les options JVM (-d64, -J-d64) sans aucune chance.

Est-ce encore possible, ou juste je limite juste à la version 32 bits (idéalement 64 bits est le meilleur que cette application va analyser beaucoup de données à partir de fichiers journaux pour afficher proprement)? Que dois-je changer dans mon JNLP pour que cela fonctionne?

<?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> 

Répondre

4

Vous pouvez créer un seul fichier jnlp prenant en charge les deux architectures. Par exemple:

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

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

Si nécessaire, l'étiquette des ressources peut également prendre un attribut os, comme dans os="Linux", os="Mac" et os="Windows"

De cette façon, vous pouvez avoir un seul fichier jnlp qui fera la bonne chose en ce qui concerne aux bibliothèques natives, quel que soit le système d'exploitation et l'architecture de l'utilisateur.

Voir aussi How to distinguish 32 bit from 64 bit java version in jnlp files

+1

Oui, mais cela ne suffit pas que les utilisateurs qui ont à la fois JVM 32 bits et 64 sur leur machine faire usage de la mémoire supplémentaire qui peut être alloué. C'est la principale raison pour laquelle j'essaie de faire fonctionner le 64 bits. – user2857108

+1

JNLP utilisera la première ressource correspondante. Donc, avoir l'élément ressources avec l'arc de 64 bits en premier, laissera la seconde (32 bits) comme solution de repli. Vous pouvez, bien sûr, supprimer l'élément de ressources arch 32 bits pour interdire la JVM 32 bits. –