Bonjour,
j'ai écrit un programme qui permet d'afficher une fenetre dans laquelle, il y a une JTable
et un menu qui permet d'afficher un graphe lorsque l'on fait un choix.
La fenetre est de ce type :
http://cjoint.com/data/gBpRqCTQrd.htm
Comme le programme fonctionnait, je souhaitais déployer cette ap^plication via java web part
mais le programme ne fait rien.
Il y a bien la fenetre et le menu mais la JTable n'apparait pas et il y a pas de graphes qui
apparaissent lorsque je clique sur un des choix du menu.
Ce que j'obtiens :
http://cjoint.com/data/gBpRN1NLtm.htm
Pour obtenir les graphes, j'ai utilisé JFreeChart et awt/swing pour l'interface graphique.
Le fichier test.jnlp que j'ai écrit est le suivant :
<?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="http://localhost/Local-Site-A/" href="test.jnlp"> <information> <title>Mon Logiciel par JNLP</title> <vendor>Pierre Sylvestre</vendor> </information> <resources> <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/> <jar href="http://localhost/Local-Site-A/test.jar"/> <jar href="http://localhost/Local-Site-A/lib/jfreechart-1.0.5.jar"/> <jar href="http://localhost/Local-Site-A/lib/junit.jar"/"> <jar href="http://localhost/Local-Site-A/lib/itext-2.0.1.jar"/> <jar href="http://localhost/Local-Site-A/lib/jfreechart-1.0.5.jar"/> <jar href="http://localhost/Local-Site-A/lib/jfreechart-1.0.5-experimental.jar"/> <jar href="http://localhost/Local-Site-A/lib/servlet.jar"/> <jar href="http://localhost/Local-Site-A/lib/jcommon-1.0.9.jar"/> <jar href="http://localhost/Local-Site-A/lib/jfreechart-1.0.5-swt.jar"/> <jar href="http://localhost/Local-Site-A/lib/swtgraphics2d.jar"/> </resources> <application-desc main-class="MonMenu" /> </jnlp>
Est-ce que quelqu'un aurait une idée de la raison pour laquelle, la fenetre s'affiche mais
ne fait rien ?
Merci
Ah bon ?
Parce que si je regarde ta capture avec mes petits yeux porcins, je vois bien un JTable.
Vide certes, mais présente.
Parce que le code est écrit par maxlegrand je dirais :)
Parce que maxlegrand musele les exceptions (cf. le post d'avant avec la JTable) , donc aucun messages d'erreurs apparents ni rien.
Mais je parierais volontiers qu'avec un code sans exceptions muselées, on verrait que la connexion à la base de données ne se fait pas.
Tiens à propos de base de données, je ne vois pas de pilote dans les ressources, c'est normal ?
Normal, je ne pense pas ... Je commence à peine à utiliser JWS. Comment est-ce que s'écrive les pilotes dans la ressource ?
Merci
Je me suis permis de te charrier un peu, parce que dans la discussion JTable il y a quelques jours les exceptions étaient bel et bien muselées. :)
Et tu ne voyais pas ce qui n'allait pas à cause de ça.
Tel que tu décris le problème aujourd'hui, on jurerait que c'est semblable. As tu bien vérifié qu'aucune exception n'est muselée ?
Parce que si aucune exception n'était muselée, on en verrait une qui dit que la connexion à la base de données ne se fait pas, ou même une qui dit que les classes du pilote sont manquantes.
Enfin bref, ça marche pas et normalement il est légitime de s'attendre à une exception dans ce cas.
Ben les pilotes de bases de données sont un jar comme les autres à priori.
C'est quelle base de données au fait ? La connexion est elle seulement autorisée ?
Je remets le code qui m'a permis de me connecter à la base de donnée sql server.
Pour effectuer la connection, je n'ai pas eu besoin d'importer un fichier jar dans Eclipse.
Voici le code pour la connection:
MyTableModel contient les méthodes pour remplir, vider la table
Comme je n'ai pas utilisé de jar, je ne sais pas trop du quel tu parles.
J'ai essayé en mettant le jar sqljdbc.jar que j'ai téléchargé ici :
http://www.microsoft.com/downloads/thankyou.aspx?familyId=f914793a-6fb4-475f-9537-b8fcb776befd&displayLang=en
Mais ça ne donne rien. J'ai aussi essayé en mettant le jar rt.jar dans mon fichier jnlp mais rien également.
Je ne sais plus trop quoi tester.
La base de donnée est sql server 2005
Bien sûr que si.
Tu l'as fait à l'insu de ton plein gré voilà tout.
Bon on voit que tu utilises le pont JDDC/ODBC. C'est intégré à Java, dans rt.jar.
Ne me dis pas que ce jar là n'est pas importé dans Eclipse hein ? :lol:
Maintenant tu sais :)
Bon ton application est graphique, mais avec printStackTrace tu fais une sortie dans la console. Si l'appli n'est pas lancée par la console, c'est un peu comme si l'exception était muselée. Je veux dire qu'elle n'est pas traitée, car la seule sortie d'un message d'erreur n'est pas un traitement, et le message d'erreur n'est pas visible.
Dans une application graphique il est beaucoup mieux d'ouvrir une fenêtre de message pour informer. Et comme
ne relance pas l'exception, au final elle est interceptée et pas traitée, donc c'est tout comme si elle était muselée.
maxlegrand, grand museleur d'exception devant l'éternel :D
Bon, donc la connexion ne se fait pas. Heu, c'est donc une connexion à une source de données OBDC que tu veux. Hem hem, tu es sûr que cette source est accessible ?
Dans le cas général, un ordinateur lambda sur le Net n'a aucune chance d'accéder à la source de données ODBC.
Ou plus exactement l'application cherche la source de données ODBC sur la bécane où elle est lancée. Si la source est ailleurs ça ne risque pas de marcher
J'ai changé et utilisé le pilote sql server. J'ai importé le jar qu'il fallait sqljdbc.jar.
Je lance le programme et j'obtiens l'exception :
Une idée d'ou peut provenir le probleme ?
Le code modifié :
J'ai résussi à établir une connection en utilisant le driver sql server.
L'arborescence de mon projet est maitenant le suivant :
http://cjoint.com/data/gCpnNZCh70.htm
Le fichier sqljdbc_auth.dll est nécessaire car sinon j'obtenais une exception.
Le programme fonctionne normalement avec Eclipse mais ça se gâte encore avec Java Web Start.
Tous les fichiers et jar sont placés ici :
http://cjoint.com/data/gCpqhYq3rt.htm
J'ai mis le fichier sqljdbc_auth.dll dans l'archive testNtiveLib.jar
test.jnlp :
Ensuite je lance JWS, et j'obtiens :
Je mets toutes les étapes :
http://cjoint.com/data/gCpuOEZfYj.htm
http://cjoint.com/data/gCpwrohVRe.htm
http://cjoint.com/data/gCpxEgtlXM.htm
http://cjoint.com/data/gCpyYfLQYX.htm
et pour l'exception, c'est :
Cette fois on ne peut pas dire que ce sont les exceptions qui manquent ;)
A les voir, je dirai qu'une configuration de sécurité de JWS empêche le chargement des librairies natives, donc dans ton cas il s'agit de sqljdbc_auth.dll bien sûr
Et du coup la connexion est à nouveau refusée, un peu comme elle l'était quand sqljdbc_auth.dll manquait lors de tes essais.
Malheureusement je ne sais pas comme configurer pour que ça marche, je n'ai jamais eu à le faire et je ne sais pas. Mais tu trouveras bien.
J'ai réussi à régler quelques soucis mais il en reste encore ...
J'ai signé toutes les archives mais arrivé au jar sqljdbc.jar, j'obtiens une erreur
Comment corrigé ça ?
Donc j'ai essayé de lancer le JWS sans avoir signé ce jar et j'obtiens :
Erreur : Les ressources jar n'ont pas été signés à l'aide du même certificat :
Fichier de lancement :
Exception :
l'archive jar, qui n'est comme tu le sais rien d'autre qu'un zip, ne serait elle pas intègre ?
Au fait je pensais à toi ce matin et je me disais, puisqu'il y a une dll côté client ça veut dire que ton appli tourne forcément sous Windows ?
Je me pensé aussi "mais ça fait combien de temps qu'il perd avec ça" ? Et du coup je me suis dit:
(eql "Java" "efficacité")
nil
;) :lol:
Bon je rigole, mais faut pas croire, je compatis à ta galère.
Bon courage à toi
Ca a été long mais j'ai enfin réussi à faire fonctionner mon programme avec JWS.
Pour ce qui est de mon erreur précédente, je l'ai résolu en décompressant sqljdbc.jar puis j'ai viré le répertoire qui contenait le fichier manifest puis j'ai recrée l'archive. Je l'ai signé. Et ça fonctionne maitenant.
Merci pour ton aide et soutien :wink: