Sun.jdbc.odbc.JdbcOdbcDriver => ClassNotFoundException [Résolu]

Signaler
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
-
 zahra93 -
bonjour,

afin d'interroger une BDD access dans une de mes applets, j'utilise la commande "Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();". tout fonctionne normalement dans eclipse (les drivers sont trouve et ma BDD est interrogee) mais ca plante lorsque je mets mon "*.class" a la racine de ma page web et que je tente charger mon applet (j'ai egalement essaye avec une archive jar).

j'ai verifie et le prog plante sur Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();.
le msg d'erreur est : ClassNotFoundException

que ce passe passe t'il ? pourquoi eclipse ne joint pas les drivers odbc a mon jar ? comment corriger ce probleme ?

(j'ai de deja joints java.sql.* a mon jar en le dezipant et apres avoir transforme tous les *.java en *.class mais ca n'a rien resolu ...)

merci a vous,

alonsyl

14 réponses

Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
108
Salut,



ralala fais un effort :)



apres un copier collé de

java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc

dans la zone de recherche de google je suis tombé sur cette page java.lang.RuntimePermission+accessClassInPackage.sun.jdbc.odbc&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official ici

et le premier lien de cette courte recherche me dirige sur le site de sun ici ensuite feignasse comme je suis je fais Ctrl+f dans mon firefox et dans la zone de recherche je colle

java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc

et la je tombe sur ce petit paragraphe




Reading a Stack Trace:
If the DbaOdbAppl.java applet
is launched without a policy file, the following stack trace
is generated when the end user clicks the
Click Me

button.



java.security.AccessControlException: access denied
(java.lang.RuntimePermission
accessClassInPackage.sun.jdbc.odbc )




The first line in the above stack trace tells you access is denied.
This means this stack trace was generated because the applet tried to
access a system resource without the proper permission. The second
line means you need a
RuntimePermission
that gives
the applet access to the
sun.jdbc.odbc
package.
This package provides the JDBC-ODBC bridge functionality to the
Java1 virtual machine (VM).




You can use Policy tool to create the policy file you need,
or you can create it with an ASCII editor. Here is the policy
file with the permission indicated by the stack trace:



grant {
permission java.lang.RuntimePermission
"accessClassInPackage.sun.jdbc.odbc";
};




Run the applet again, this time with a policy file named
DbaOdbPol
that has the above permission in it:



appletviewer -J-Djava.security.policy =DbaOdbPol
DbaOdb.html




You get a stack trace again, but this time it is a different
error condition.



java.security.AccessControlException:
access denied (java.lang.RuntimePermission
file.encoding read)




The stack trace means the applet needs read permission to the encoded
(binary) file.
Here is the
DbaOdbPol
policy file with the permission
indicated by the stack trace added to it:



<!-- BEGIN VCD7 CODE SAMPLE COMPONENT -->
grant {
permission java.lang.RuntimePermission
"accessClassInPackage.sun.jdbc.odbc";
permission java.util.PropertyPermission
"file.encoding", "read";
};





<!-- END VCD7 CODE SAMPLE COMPONENT -->

Run the applet again. If you use the above policy file
with the Runtime and Property permissions indicated, it
works just fine.



appletviewer -J-Djava.security.policy=DbaOdbPol
DbaOdb.html








Vive google c'est un ami très fidèle







WORA
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
108
Salut,



eclipse rajoute ton jar au classpath pour run ton applet (ou application) en aucun cas il va te les ajouter dans ton jar....


WORA
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
ok ! alors sais tu quel est le nom du fichier qui contient "sun.jdbc.odbc.JdbcOdbcDriver" et que je dois joindre a mon jar ?

d'autre part, je pensais qu'il etait possible dans l'assistant conception de jar d'eclipse d'ajouter les librairies qu'eclipse ne met pas par defaut. est-ce que je me trompe ?

merci a toi,

alonsyl
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
108
je ne sais pas vraiment tu as essayé le package
sun/jdbc/odbc/JdbcOdbcDriver? citué dans rt.jar du jre rt.jar c'est le
jar contenant toutes les classes de la machine virtuelle qui est natif
au jre...



sinon pour eclipse je ne sais pas je n'tulise pas l'outils graphique
pour mes jar j'utilise ant qui me permet plus de possibilitée


WORA
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
1) j'ai ajoute C:\Program Files\jre1.5.0_04\lib (repertoire de rt.jar) au classpath mais tjrs rien

2) j'ai essaye d'ajouter rt.jar a l'interieur de monApplet.jar (a la racine) sans plus de succes
(pourtant ca avait marche l'autre jour qd tu m'avais dit de le faire pour mysql-connector : http://www.javafr.com/infomsg/JOINDRE-DRIVERS-MYSQL-JAR-1_680633.aspx)

que dois-je faire ?

toujours est-il que j'en ai un peu marre de ces pbl d'adjonction de bibliotheques a la conception du jar !!!

merci a toi,

alonsyl
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
108
Enfaite rtp.jar c'est le seul jar qui est particulier :) normalement tu
n'est pas censé de le mettre dans le classpath mais tu peux qd meme le
faire comme ceci



je ne connais pas la syntax crochiotte donc adapte



export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$CLASSPATH



il est impératif de commencer par un '.' suivit du séparateur sous linux ':'





tu es un grand malade ne rajoute pas rt.jar dans ton jar looooool c'est franchement pas util.

WORA
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
108
Peux-tu essayer ca stp (c'est ce que je fais dans une de mes
appli


Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Properties props = new Properties();

props.setProperty("user", user);

props.setProperty("password", pass);

props.setProperty("autoReconnect", "true");

connection = DriverManager.getConnection(dbURL, props);





à la place de
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();.





et me dire si tu plante encore





et aussi dans une console faire java -version et me donner la version :)


WORA
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
rien a faire, j'ai beau modifier le classpath et tordre mon jar dans tous les sens, je n'arrive pas a faire en sorte que ca fonctionne hors d'eclipse ...

j'ai tout de meme essaye ton bout de code mais (comme je m'y attendais), ca plante sur "Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");" car il ne trouve pas les drivers "sun.jdbc.odbc.JdbcOdbcDriver".

toujours est t'il que je ne comprends pas pourquoi il arrive a trouver toutes les classes et les packages de rt.jar sauf "mon sun.jdbc.odbc.*".

je commence a desesperer ...

merci a toi

alonsyl
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
108
Salut,



heu question a la con tu as creer la base sur ton poste client crochiotte? je parle dans les service ODBC, de win



sinon tiens matte ce lien

http://home.tiscali.nl/~bmc88/java/sbook/015.html



sinon j'ai choppé ca sur un site (je ne sais plus ou dsl)




Sécurité des applets: l'accès à une base ne peut se faire que si la base est
sur la machine d'où provient l'applet; en fait le pilote JDBC ne peut
se connecter qu'aux bases situées sur la machine où il est chargé;
le pilote doit aussi vérifier que l'applet qui le sollicite est autorisée à
le faire. Ces vérifications ne concernent pas l'utilisation de la base. Une
applet ne peut pas accéder à des données locales.




WORA
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
je suis tres nul mais j'ai quand meme penser a creer ma BDD ;-)

j'arrive meme a my connecter et faire toutes les operations dont j'ai besoin (quand je suis dans eclipse !!!). en fait, j'ai installe eclipse sur mon server => si je m'y connecte depuis eclipse, je devrait egalement la trouver sans rien modifier depuis ma page web ...

ceci dit, je vais regarder avec attention les infos dont tu m'as fait part ...

merci a toi,

alonsyl
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
j'ai du nouveau !!!
apres avoir tordu mon applet dans tous les sens, j'ai controler mon msg d'erreur et je n'ai plus "ClassNotFoundException" mais "java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)".

saurait-tu comment faire sauter cette erreur ?

merci a toi,

alonsyl
Messages postés
1
Date d'inscription
lundi 25 décembre 2006
Statut
Membre
Dernière intervention
25 juin 2007

Bonjour,

J'aimerais savoir comment pourrait-on connecter eclipse avec ODBC. J'ai telecharge QuantumDB mais ca na pas marche. N y'aurait-il pas par hasard de pilote a installer pout que ca puisse fonctionner ?

merci d'avance A+
Messages postés
1
Date d'inscription
mercredi 11 avril 2007
Statut
Membre
Dernière intervention
27 décembre 2008

pour les applet il ne faut pas oublier de les signer sinon ça ne marchara pas
Moi le fichier rt.jar se trouve dans le dossier programme/java/jre5 est-ce que ca poserait un problème?

Courage mon peuple