J'ai une application qui est déployée avec Java web start.
Elle utilise des jar écrits par des "third-parties". (jxl.jar entre autre)
J'ai donc placé ces jar sur mon serveur et créé un fichier jnlp pour qu'ils
soient chargés et utilisés par mon application.
Seulement certains utilisateurs ont une version plus ancienne et incompatible de
jxl.jar dans leur répertoire d'extension (jre_path/lib/ext).
Sûrement installée par une autre application Java.
Au démarrage de mon appli, c'est le jar qui se trouve dans le répertoire
d'extension qui est utilisé et non le jar qui est spécifié dans mon fichier
jnlp.
Et du coup mon appli. ne fonctionne plus.
Comment puis-je m'en sortir ?
J'ai cherché sur le WEB, et il semble que pour un application lancée par une
ligne de commande "java ....", le répertoire d'extension soit inspecté avant le
user class-Path.
(Mais dans ce cas on doit pouvoir s'en sortir en démarrant le programme
avec -Djava.ext.dirs="" )
Je n'ai par contre pas trouvé d'information exhaustive sur la façon de trouver
les classes avec Java web start.
Mais j'ai l'impression que tous les jar indiqués dans le jnlp sont considérés
comme étant des jar utilisateurs.
Y a-t-il un paramètre dans le fichier jnlp qui permette de supprimer
l'utilisation du répertoire d'extension ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
TestMan
Bonjour,
J'ai une application qui est déployée avec Java web start. Elle utilise des jar écrits par des "third-parties". (jxl.jar entre autre) J'ai donc placé ces jar sur mon serveur et créé un fichier jnlp pour qu'ils soient chargés et utilisés par mon application.
Seulement certains utilisateurs ont une version plus ancienne et incompatible de jxl.jar dans leur répertoire d'extension (jre_path/lib/ext). Sûrement installée par une autre application Java.
Au démarrage de mon appli, c'est le jar qui se trouve dans le répertoire d'extension qui est utilisé et non le jar qui est spécifié dans mon fichier jnlp. Et du coup mon appli. ne fonctionne plus.
Comment puis-je m'en sortir ?
J'ai cherché sur le WEB, et il semble que pour un application lancée par une ligne de commande "java ....", le répertoire d'extension soit inspecté avant le user class-Path. (Mais dans ce cas on doit pouvoir s'en sortir en démarrant le programme avec -Djava.ext.dirs="" )
Je n'ai par contre pas trouvé d'information exhaustive sur la façon de trouver les classes avec Java web start. Mais j'ai l'impression que tous les jar indiqués dans le jnlp sont considérés comme étant des jar utilisateurs. Y a-t-il un paramètre dans le fichier jnlp qui permette de supprimer l'utilisation du répertoire d'extension ?
Merci d'avance, Thierry
Bonjour,
Chouette, j'aime bien ce genre de question :o)
Comme tu l'as comprit, si un JAR est installé dans lib/ext il est installé comme extension standard (en manuel), et il est impossible pour une application de le "masquer" de même qu'il est impossible de masquer les classes du bootclasspath (package java.* par exemple), et fort heureusement.
En attendant que le JSR Java Module nous sauvent tous des dépendances et gestion de version et nous permette de demander par exemple une mise à jour, il va donc valoir trouver une alternative ...
Voici ma proposition : - auditer les machines impactées afin de vérifier la version du JRE maximum utilisée dans ton contexte - forcer l'utilisation d'une nouvelle VM avec version+1 ;-)
C'est un peu brutal, mais représente une solution tant que la version maximum constatée est inférieure à la version actuelle de Sun. La seule alternative qui me vient est de te faire un "jxl-bis" avec des classes ayant un nom de paquet différent (encore plus brutal, et .... "vraiment pas beau" car c'est toi qui gère les "racourcis" pris par les autres).
Enfin, trouver les "plaisantins" qui jouent avec le lib/ext comme bac à sable de leur appli et leur "indiquer gentillement" que c'est un lieu public et que ce genre de bricolage n'est pas souhaitable et qu'il doivent uiliser d'autres solutions : webstart/extension, installateur, ...
Pour finir, vous mettre d'accord sur un serveur commun d'extensions webstart que vous souhaites utilisez (un simple Tomcat ou GlassFish ferra l'affaire).
A+ TM
Bonjour,
J'ai une application qui est déployée avec Java web start.
Elle utilise des jar écrits par des "third-parties". (jxl.jar entre autre)
J'ai donc placé ces jar sur mon serveur et créé un fichier jnlp pour qu'ils
soient chargés et utilisés par mon application.
Seulement certains utilisateurs ont une version plus ancienne et incompatible de
jxl.jar dans leur répertoire d'extension (jre_path/lib/ext).
Sûrement installée par une autre application Java.
Au démarrage de mon appli, c'est le jar qui se trouve dans le répertoire
d'extension qui est utilisé et non le jar qui est spécifié dans mon fichier
jnlp.
Et du coup mon appli. ne fonctionne plus.
Comment puis-je m'en sortir ?
J'ai cherché sur le WEB, et il semble que pour un application lancée par une
ligne de commande "java ....", le répertoire d'extension soit inspecté avant le
user class-Path.
(Mais dans ce cas on doit pouvoir s'en sortir en démarrant le programme
avec -Djava.ext.dirs="" )
Je n'ai par contre pas trouvé d'information exhaustive sur la façon de trouver
les classes avec Java web start.
Mais j'ai l'impression que tous les jar indiqués dans le jnlp sont considérés
comme étant des jar utilisateurs.
Y a-t-il un paramètre dans le fichier jnlp qui permette de supprimer
l'utilisation du répertoire d'extension ?
Merci d'avance,
Thierry
Bonjour,
Chouette, j'aime bien ce genre de question :o)
Comme tu l'as comprit, si un JAR est installé dans lib/ext il est
installé comme extension standard (en manuel), et il est impossible pour
une application de le "masquer" de même qu'il est impossible de masquer
les classes du bootclasspath (package java.* par exemple), et fort
heureusement.
En attendant que le JSR Java Module nous sauvent tous des dépendances et
gestion de version et nous permette de demander par exemple une mise à
jour, il va donc valoir trouver une alternative ...
Voici ma proposition :
- auditer les machines impactées afin de vérifier la version du JRE
maximum utilisée dans ton contexte
- forcer l'utilisation d'une nouvelle VM avec version+1 ;-)
C'est un peu brutal, mais représente une solution tant que la version
maximum constatée est inférieure à la version actuelle de Sun.
La seule alternative qui me vient est de te faire un "jxl-bis" avec des
classes ayant un nom de paquet différent (encore plus brutal, et ....
"vraiment pas beau" car c'est toi qui gère les "racourcis" pris par les
autres).
Enfin, trouver les "plaisantins" qui jouent avec le lib/ext comme bac à
sable de leur appli et leur "indiquer gentillement" que c'est un lieu
public et que ce genre de bricolage n'est pas souhaitable et qu'il
doivent uiliser d'autres solutions : webstart/extension, installateur, ...
Pour finir, vous mettre d'accord sur un serveur commun d'extensions
webstart que vous souhaites utilisez (un simple Tomcat ou GlassFish
ferra l'affaire).
J'ai une application qui est déployée avec Java web start. Elle utilise des jar écrits par des "third-parties". (jxl.jar entre autre) J'ai donc placé ces jar sur mon serveur et créé un fichier jnlp pour qu'ils soient chargés et utilisés par mon application.
Seulement certains utilisateurs ont une version plus ancienne et incompatible de jxl.jar dans leur répertoire d'extension (jre_path/lib/ext). Sûrement installée par une autre application Java.
Au démarrage de mon appli, c'est le jar qui se trouve dans le répertoire d'extension qui est utilisé et non le jar qui est spécifié dans mon fichier jnlp. Et du coup mon appli. ne fonctionne plus.
Comment puis-je m'en sortir ?
J'ai cherché sur le WEB, et il semble que pour un application lancée par une ligne de commande "java ....", le répertoire d'extension soit inspecté avant le user class-Path. (Mais dans ce cas on doit pouvoir s'en sortir en démarrant le programme avec -Djava.ext.dirs="" )
Je n'ai par contre pas trouvé d'information exhaustive sur la façon de trouver les classes avec Java web start. Mais j'ai l'impression que tous les jar indiqués dans le jnlp sont considérés comme étant des jar utilisateurs. Y a-t-il un paramètre dans le fichier jnlp qui permette de supprimer l'utilisation du répertoire d'extension ?
Merci d'avance, Thierry
Bonjour,
Chouette, j'aime bien ce genre de question :o)
Comme tu l'as comprit, si un JAR est installé dans lib/ext il est installé comme extension standard (en manuel), et il est impossible pour une application de le "masquer" de même qu'il est impossible de masquer les classes du bootclasspath (package java.* par exemple), et fort heureusement.
En attendant que le JSR Java Module nous sauvent tous des dépendances et gestion de version et nous permette de demander par exemple une mise à jour, il va donc valoir trouver une alternative ...
Voici ma proposition : - auditer les machines impactées afin de vérifier la version du JRE maximum utilisée dans ton contexte - forcer l'utilisation d'une nouvelle VM avec version+1 ;-)
C'est un peu brutal, mais représente une solution tant que la version maximum constatée est inférieure à la version actuelle de Sun. La seule alternative qui me vient est de te faire un "jxl-bis" avec des classes ayant un nom de paquet différent (encore plus brutal, et .... "vraiment pas beau" car c'est toi qui gère les "racourcis" pris par les autres).
Enfin, trouver les "plaisantins" qui jouent avec le lib/ext comme bac à sable de leur appli et leur "indiquer gentillement" que c'est un lieu public et que ce genre de bricolage n'est pas souhaitable et qu'il doivent uiliser d'autres solutions : webstart/extension, installateur, ...
Pour finir, vous mettre d'accord sur un serveur commun d'extensions webstart que vous souhaites utilisez (un simple Tomcat ou GlassFish ferra l'affaire).