2015-10-20 4 views
4

Question modifiée. J'essaye d'exécuter l'application de démarrage de printemps dans JNLP mais après avoir résolu tous les problèmes de sécurité, j'ai toujours cette erreur. Il se produit lors de l'initialisation du démarrage au démarrage au démarrage. C'est lié au cycle de vie de démarrage de printemps en quelque sorte et domaine de protection évidemment, mais je ne sais vraiment pas comment y remédier. JAR fonctionne parfaitement lorsqu'il s'exécute en tant qu'application autonome avec java -jar Test.jar.Impossible de démarrer le démarrage au printemps dans JNLP avec Java WebStart

exception de la console Java Web Start:

Unable to determine code source archive from \\localhost:8080\jnlp\Test.jar 
org.springframework.boot.loader.Launcher.createArchive(Launcher.java:151) 
     at org.springframework.boot.loader.PropertiesLauncher.<init>(PropertiesLauncher.java:149) 
     at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:607) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at com.sun.javaws.Launcher.executeApplication(Unknown Source) 
     at com.sun.javaws.Launcher.executeMainClass(Unknown Source) 
     at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
     at com.sun.javaws.Launcher.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 

L'exception se produit dans Launcher.java (outils de démarrage-printemps):

protected final Archive createArchive() throws Exception { 
     ProtectionDomain protectionDomain = getClass().getProtectionDomain(); 
     CodeSource codeSource = protectionDomain.getCodeSource(); 
     URI location = (codeSource == null ? null : codeSource.getLocation().toURI()); 
     String path = (location == null ? null : location.getSchemeSpecificPart()); 
     if (path == null) { 
      throw new IllegalStateException("Unable to determine code source archive"); 
     } 
     File root = new File(path); 
     if (!root.exists()) { 
      throw new IllegalStateException(
        "Unable to determine code source archive from " + root); 
     } 
     return (root.isDirectory() ? new ExplodedArchive(root) 
       : new JarFileArchive(root)); 
    } 

botte de printemps n'est pas en mesure d'obtenir l'absolu chemin pour le jar de démarrage de printemps exécuté - il passe juste l'URI dans un format, dans mon cas \ localhost: 8080 \ jnlp \ Test.jar, normalement le location points à L'URI absolue du fichier. Par conséquent, le démarrage de démarrage ne peut pas être initialisé dans Java WebStart.

Mon JNLP:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://localhost:8080/" href="Test.jnlp"> 
    <information> 

     <vendor>TEST</vendor> 
     <homepage href="http://localhost:8080/" /> 
     <description>Testing Testing</description> 
    </information> 
    <update check="timeout" policy="always"/> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
     <j2se version="1.8+" /> 
     <jar href="/jnlp/Test.jar" /> 
    </resources> 
    <application-desc main-class="org.springframework.boot.loader.PropertiesLauncher" /> 
</jnlp> 

Les conseils comment pousser le chemin de fichier absolu dans Launcher.java sans fixer la bibliothèque de démarrage de printemps? Je vois que cela ne pourrait pas être très facilement résolu ... Spring Boot ne supporte tout simplement pas l'exécution à partir d'emplacements sans fichier (ou non-servlet), car il fonctionne avec un chargeur de classe personnalisé. De plus, la variable path doit être identique à celle du fichier jar exécuté. Il n'est donc pas possible de pointer le fichier téléchargé (le même fichier en fait). :(

+0

Avez-vous trouvé une solution? – Bhargav

+0

Non, il est pas pris en charge et aucune réponse de la part des développeurs de printemps. – Mejmo

+0

donc botte de printemps ne prend pas en charge jnlp? – Bhargav

Répondre