IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JWS Java Discussion :

JavaWebStart et déclaration de Jar


Sujet :

JWS Java

  1. #1
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut JavaWebStart et déclaration de Jar
    Bonjour à tous,

    J'ai développé mon application sous Netbeans, et je souhaite maintenant le déployer.

    C'est javaWebStart que j'ai décidé d'utiliser pour cela. Mais j'ai un souci de taille pour le moment avec l'utilisation de jws.

    Voici le souci :

    Mon jar de lapplication, utilier plusieurs Jar ( JDom, MySql-connector,... ) mais aussi des librairies (la librairie de netbeans pour la création de design).
    Lorsque je build mon application, netbeans me crée donc un jar exécutable, avec dans un répertoire lib les différents jar dont le soft à besoin.

    Le souci, c'est qe une fois sous jws, c'est comme si ces Jars étaient inexistants. Impossible de se connecter à une db, impossible de lire un fichier xml avec jdom, ... alors que pourtant le designe fonctionne parfaitement lui.

    Dans le jnlp, j'ai utiliser plusieurs façons pour déclarer mes Jars
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Jar href="monjar.jar">
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <external lib href="monjar.jar">
    quelque soit la méthode, ça ne fonctionne pas. Et pourtant dnas le manifest de mon application, le classpath comprend bien les différents jar dont j'ai besoin.

    Si un habitué de JWS peut m'éclairer, je lui en serai reconnaissant.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Avec JWS le manifest n'est pas pris en compte, il faut declarer les jars un par un dans le .jnlp (ça ne marche pas s'ils sont dont le jar principal, il faut qu'ils soient dans le même répertoire)

  3. #3
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    tu es certain que le manifest n'est pas pris en compte ? car je ne spécifie pas de classe main dans le jnlp et il prend bien celle qui est spécifiée dans le manifest.

    Sinon mes jars ne sont pas dans le jar principal mais dans un répertoire /lib qui se trouve dans le même répertoire que mon jar principal.

    Tu me dis que je dois les déclarer dans le jnlp, mais c'est ce que je fais pourtant, avec les "Jar href", et pourtant le problème est toujours présent.

  4. #4
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Tu trouveras ici un exemple de jnlp qui définit une librairie, justement (quelle chance ! ) dans un répertoire lib. Regarde le tag resources.

  5. #5
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    le souci, c'est que cet exemple n'utilise qu'un seul jar, ce qui fait que ça ne m'aide en rien.

    J'utilise plusieurs jar, un principal et des autres. Et ce sont les autres qui me posent de gros problèmes. Je déclare déjà mes jar dans le tag Ressource

    Il y a une liste d'exemple sur le site que tu as donné, mais à chaque fois c'est pareil.

    Par contre j'ai vu qu'il fallait utiliser des instructions spécifiques pour pouvori accéder à des images ou autres ressources dans un jar pour le soft. Est ce la même chose pour accéder à des jars ?

  6. #6
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     <resources>
        <jar href="un.jar"/>
        <jar href="unRepertoire/jar2.jar"/>
        <jar href="unRepertoire/unAutreRepertoire/jar3.jar"/>
        <jar href="absolument/n/importe/quoi/jar3257.57.jar"/>
      </resources>

  7. #7
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    ben en fait c'est déjà la méthode que j'utilise. Voici la déclaration de mon fichier jnlp, je pense que ça éclairera plus facilement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?xml version="1.0" encoding="utf-8"?>
    	<jnlp spec="1.0+" codebase="http://localhost/javawebstart/" 
    				href="jws.jnlp">
    	<information>
    		<title>Tools</title>
    		<vendor>hadler</vendor>
    		<homepage href="jws.html"/>
    	</information>
     
    	<security>
    		<all-persmissions/>
    	</security> 
     
    	<resources>
    		<j2se version="1.5"/>
    		<jar href="principal.jar" main="true"/>
    		<jar href="swing-layout-1.0.jar" main="false"/>
    		<jar href="commons-httpclient.jar" main="false"/>
    		<jar href="commons-logging.jar" main ="false"/>
    		<jar href="jakarta-slide-webdavlib-2.1.jar" main ="false"/>
    		<jar href="mysql-connector.jar" main="false"/>
    		<jar href="jdom.jar" main="false"/> 
    	</resources>
    	<application-desc main-class="com.working.main"/>
    </jnlp>
    Donc voila, avec cette méthode de déclaration, j'ai énormément de souci puisque c'est comme si il ne trouvait pas mes jars "annexes" quand il en a besoin dans mon programme.

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par hadler
    Donc voila, avec cette méthode de déclaration, j'ai énormément de souci puisque c'est comme si il ne trouvait pas mes jars "annexes" quand il en a besoin dans mon programme.
    Ces Jar annexes sont bien accesible sur le serveur dans le même répertoire que le jar principal ???
    Vérifie également les différences de casse (les serveur Web y sont généralement sont sensible).

    a++

    PS : si tu spécifie la main-class tu n'as pas besoin de donner la valeur de l'attribut main pour tout tes jar

  9. #9
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    D'après ce que tu dis, je me serais attendu à ce que tu écrive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<resources>
    		<j2se version="1.5"/>
    		<jar href="principal.jar" main="true"/>
    		<jar href="lib/swing-layout-1.0.jar" main="false"/>
    		<jar href="lib/commons-httpclient.jar" main="false"/>
    		<jar href="lib/commons-logging.jar" main ="false"/>
    		<jar href="lib/jakarta-slide-webdavlib-2.1.jar" main ="false"/>
    		<jar href="lib/mysql-connector.jar" main="false"/>
    		<jar href="lib/jdom.jar" main="false"/> 
    	</resources>

  10. #10
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    ce n'est pas du à la différence de case, je viens de vérifier. Surtout que je ne vois pas pourquoi ça fonctionnerait en ligne de commande avec java -jar s'il y avait un souci de case.

    Pour ce qui est de la déclaration des jars externes, je n'ai pas mis le répertoire /lib car dernièrement j'ai tenté en mettant tous les jar dans le même répertoire que mon jar principal pour voir s'il y avait une différence, mais rien du tout ne change.

  11. #11
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hadler
    ce n'est pas du à la différence de case, je viens de vérifier. Surtout que je ne vois pas pourquoi ça fonctionnerait en ligne de commande avec java -jar s'il y avait un souci de case.
    Certain système (Windows plus exactement) ne prennent pas en compte la casse pour les noms de fichier...



    Sinon on pourrait avoir la stacktrace de l'exception que tu obtiens ?

    a++

  12. #12
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    voici l'erreur que javaWebStart me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    java.security.AccessControlException: access denied (java.io.FilePermission users.xml read)
    	at java.security.AccessControlContext.checkPermission(Unknown Source)
    	at java.security.AccessController.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkRead(Unknown Source)
    	at java.io.File.exists(Unknown Source)
    	at com.display.MyPnlLogin.getListLogin(MyPnlLogin.java:453)
    	at com.display.MyPnlLogin.initComponents(MyPnlLogin.java:96)
    	at com.display.MyPnlLogin.<init>(MyPnlLogin.java:47)
    	at com.display.BTools.<init>(BTools.java:35)
    	at com.display.BTools.getInstance(BTools.java:275)
    	at com.working.main.main(main.java:27)
    	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.continueLaunch(Unknown Source)
    	at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
    	at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
    	at com.sun.javaws.Launcher.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    je reçois ce message d'erreur lors de la connexion, lorsque je dois lire un fichier xml en local.

    Après lecture, il semble que ce problème vienne d'un fichier de règles ou je dois spécifier les règles qui me sont nécessaires et que je dois lier avec la signature de mes jars. Je dois y décrire les règles de sécurité pour me connecter à une db, ou encore pour lire des fichiers en local.

    En tout cas c'est valable pour les applets, je vais voir ce que ça donne avec jws donc.

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tout les jar doivent être signé. Est-ce le cas ?

    a++

  14. #14
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    oui tous mes jars sont bien signés par un certificat qeu j'ai créé.

    maintenant dans ce certificats je ne précisais pas les règles de sécurité dont j'avais besoin (genre accès en lecture/écriture) à un fichier en local.

    je suis en train de regarder si le souci vient bien de là et de faire les corrections qui s'imposent.

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hadler
    maintenant dans ce certificats je ne précisais pas les règles de sécurité dont j'avais besoin (genre accès en lecture/écriture) à un fichier en local.
    C'est normalement ce que fait <all-persmissions/>

    Tu es sûr que ce n'est pas un problème de droits d'accès au fichier sur le système ?

    a++

  16. #16
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    disons que faire une règle d'accès sur le fichier java policy permet d'accéder à la base de données, ce qui posait souci avant aussi.

    je pense plutot que le all-permissions permet d'utiliser toutes les règles définies par le développeur, mais que si en local les droits sont bridés, ben même avec toutes les permissions, il y a des limitations.

    je verrai bien si le problème vient bien de ce fait là ou pas une fois fini mes modifs

  17. #17
    Membre du Club Avatar de hadler
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    ben en fait je viens de trouver l'erreur. Une bête connerie, comme souvent. Une bête connerie qui m'a fait perdre 3 jours de travail pour la traquer.

    En fait mon erreur vient du <all-persmissions/> ou un s s'est glissé inopinément juste avant le m. Ce qui fait que je pensasi qu'il avait tout les droits alros que non. Et même pas un seul message d'erreur de la part de jws en voyant cette ligne mal interprétée.

    Merci à ceux qui ont tenté de m'aider ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 10h17
  2. creation d un fichier jar ou .exe en java
    Par sadjia dans le forum JBuilder
    Réponses: 13
    Dernier message: 13/12/2002, 16h01
  3. Une déclaration pour la survie du jeu vidéo en France
    Par Freakazoid dans le forum DirectX
    Réponses: 1
    Dernier message: 30/10/2002, 14h31
  4. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  5. Réponses: 8
    Dernier message: 17/05/2002, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo