2011-01-23 7 views
3

Salut les gars
Je suis this tutorial pour construire ma première application Java 3D. J'ai inclus dans mon projet le java3D libraries et mon DllLoader classe qui extrait (du classpath à l'emplacement du pot) et charge le j3dcore-ogl.dll:Java 3D Bonjour Monde - Jar gel

public class DllLoader { 

    private DllLoader() { 
    } 

    public static void extractAndLoad(String dll) throws IOException { 
     int aux = dll.lastIndexOf('/'); 
     if (aux == -1) { 
      aux = dll.lastIndexOf('\\'); 
     } 
     File dllCopy = new File((aux == -1) ? dll : dll.substring(aux + 1)); 
     try { 
      System.load(dllCopy.getAbsolutePath()); 
     } catch (UnsatisfiedLinkError e1) { 
      try { 
       DllLoader.copyFile(DllLoader.class.getResourceAsStream(dll), dllCopy); 
       System.load(dllCopy.getAbsolutePath()); 
      } catch (IOException e2) { 
      } 
     } 
    } 

    private static void copyFile(InputStream pIn, File pOut) throws IOException { 
     if (!pOut.exists()) { 
      pOut.createNewFile(); 
     } 
     DataInputStream dis = new DataInputStream(pIn); 
     FileOutputStream fos = new FileOutputStream(pOut); 
     byte[] bytes = new byte[1024]; 
     int len; 
     while ((len = dis.read(bytes)) > 0) { 
      fos.write(bytes, 0, len); 
     } 
     dis.close(); 
     fos.close(); 
    } 
} 


Tout fonctionne bien si je lance le projet de Netbeans ou si j'ouvre le pot de la ligne de commande avec java -jar Hello3DWorld.jar".
Mon problème est le suivant: si je cours le pot avec un simple double-clic rien ne se passe. La DLL apparaît près du pot mais le cadre n'apparaît jamais.
En mettant quelques JOptionPane.showMessageDialog() dans mon code pour savoir ce qui ne va pas, j'ai réalisé que l'exécution ne fait pas exception.
Il se fige juste comme dans une boucle après le chargement de la DLL.
Pouvez-vous m'aider à comprendre pourquoi il ne se bloque qu'en double-cliquant sur le pot et quel est le problème?

Répondre

2

a résolu mon problème: D
Il y avait une erreur dans le Registre Windows ... c'est la solution:
1) exécuter regedit
2) trouver HKEY_CLASSES_ROOT\jarfile\shell\open\command
3) assurez-vous le chemin pour javaw.exe est correct

0

Est-ce qu'il fonctionne même? Vous pourriez simplement ne pas avoir l'association de fichier droite pour exécuter des fichiers jar en utilisant javaw.

Voir this StackOverflow question pour l'association du fichier jar.