CLASSPATH ECLIPSE

RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004 - 30 juin 2004 à 19:55
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 20 janv. 2006 à 20:14
Bonjour à tous,

Je suis developpeur Java débutant et g donc bcp de questions, mais celle-ci me fait m'arracher les cheveux!!!!
Je ne comprends vraiment pas le systeme de classpath sous Eclipse!!! et ça m'enerve bcp.
J'ai fortement besoin de vous...

Voilà, je vous explique:

Mon arborescence
Project: Java
Sous ce project, un folder "bin".
Dans ce folder "bin", un package: com.test.applet
A l'interieur de ce package, un folder "src" qui contient .class, .java ainsi que le fichier applet.html.

Mon classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="bin"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="bin"/>
</classpath>


Mon Java Build Path (Project/Properties sous Eclipse)
Java Build Path: Java/bin
Info: /Java
Location: C:\Documents\Java

Et lorsque je lance mon fichier html (applet.html) dans mon browser, voici l'erreur:
java.lang.NoClassDefFoundError: applet (wrong name: com/test/applet/src/applet)


Tout me semble correct. Je ne sais plus quoi faire et j'aimerais vraiment comprendre mon erreur.

J'espere que bcp de monde pourra m'aider plizzz.

Au secours!!!

20 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 juil. 2004 à 09:50
:big) Neodante :big)

Déjà ton arborescence est organisé maladroitement ... normalement on a un rep 'src' puis dedans le package ... un package en Java ne sert pas à embêter les gens mais à organiser clairement ton projet et à éviter les conflits de noms .. donc ton package src bof quoi !!! lol

Lorsque tu mets le chemin vers ton class dans ton fichier HTML, tu mets bien tous le chemin du package com.test...MaClasse.class ???
@+

[Responsable www.neogamedev.com]
0
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
1 juil. 2004 à 10:03
si ton applet à pour package com.test.applet
elle soit se trouver dans com/test/applet/
bref le src est en trop!

d'ailleur c'est drolement bizarre que tu mettes un src a la fin du package.
0
RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004
1 juil. 2004 à 10:22
Ok, donc je vais supprimer mon repertoire "src" pour que ce soit plus niquel et lisible!
En fait, j'avais fait ça pour mettre les .class et .java dans un folder, pour que ce soit propre.
Je suis débutant et je ne connais pas encore comment contruire une bonne arborescence type de projet applet.
Et j'avais vu dans les exemples du sdk, qu'on mettait les .class, .java ds un "src" les images ds "images" biensur.
Ce n'est pas bon????

Concernant mon fichier html, je mettais le chemin applet.class tout simplement et j'avais ce mess d'erreur:
java.lang.NoClassDefFoundError: applet
(wrong name: com/test/applet/applet)


Là, g mis le chemin complet du package, et g ce message d'erreur:
charger : classe com/test/applet/applet.class introuvable.
Caused by: java.io.FileNotFoundException: C:\Documents\Java\bin\com\test\applet\com\test\applet\applet\class.class (Le chemin d'accès spécifié est introuvable)


J'en ai vraiment marre, si qq1 pouvait m'aider svp!
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 juil. 2004 à 10:24
:big) Neodante :big)

Oui mais justement d'après son package, src est dans le package ... à lui de nous dire maintenant !!! lol
@+

[Responsable www.neogamedev.com]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 juil. 2004 à 10:32
:big) Neodante :big)

Si mais si tu remarques la racine de ton projet contient src, doc, bin, lib ... et ensuite seulement dans le rep src tu mets tes classes .java avec les packages que tu veux ... ne pas confondre les packages avec l'arborescence de ton projet qui est ta table de travail si on peut dire .... lol

Pour ton prob ... tu mets bien ton .html dans le rep 'src' de la façon suivante src/monfichier.html et ensuite le chemin complet de ton package ... dans ton cas en fait /bin/monfichier.html ... ou tu le mets dans le même rep que le .class ???

@+

[Responsable www.neogamedev.com]
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 juil. 2004 à 10:35
:big) Neodante :big)

Mais au fait rien à voir avec le classpath Eclipse sauf si tu utilises l'applet viewer dans le menu d'exécution d'Eclipse ... si tu as une page HTML c'est que tu n'utilises pas Eclipse pour l'afficher (ce qui n'est pas plus mal si tu veux le mettre en prod ...) .... juste comme ça ...
@++

[Responsable www.neogamedev.com]
0
RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004
1 juil. 2004 à 11:27
Merci pour tes infos sur l'arborescence Neodante, mais quel est le l'arborescence type pour une applet java???
On met les .class et .java dans un folder "src", les images dans un folder "images" et le .html et le .jar en dehors, c'est bien ça??? J'aimerais connaitre tout ça, c'est pour ça que je pose bcp de questions, dsl.

Pour mon probleme, g supprimé le folder "src".
Je me retrouve donc avec:
Java(project)
bin
com
test
applet (.class, .java, .html)

Dans applet.html, j'appelle applet.class tout simplement.
et g l'erreur suivante:
java.lang.NoClassDefFoundError: applet
(wrong name: com/test/applet/applet)

Je ne comprends pas???

PS: oui, en effet, je n'utilises pas Eclipse pour lancer mon applet. Mais mon browser directement.
0
RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004
1 juil. 2004 à 12:09
Ca y est, je viens de trouver l'erreur!
Le chemin est bon mais c mon appel à la classe dans mon .html qui déconne, car j'appele applet.class et dans mon explorateur windows je ne vois que applet$1.class, applet$2.class, applet$3.class.
Pourquoi ça???? comment cela se fait-il????? Help plizz!!!

NB: Par contre, concernant ma question sur la bonne arborescence (nommage des folders, etc...) pour un project Java, je suis tout ouie!!!
0
RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004
1 juil. 2004 à 12:45
Ouffff, g corrigé le probleme de "applet$1.class", mais maintenant on retourne à la case départ! :o(
Je ne voudrais pas trop vous embêter mais là g vraiment besoin d'aide svp!

J'ai mon Java Build Path, qui est tjs "Java/bin".
Path: /Java, Location: C:\Documents\Java.
Mon Classpath qui est tjs à path="bin" (src et output).
Mon arborescence tjs la meme:
Java (Project)
bin
com
test
applet (là g mes .class, .java, .html et java.policy.)

Dans mon applet.html, je mets le chemin: applet.class.
Et lorsque je vais sur les Properties de mon fichier html:
Path: /Java/bin/com/test/applet/applet.html
Location: C:\Documents\Java\bin\com\test\applet\applet.html

Et voici l'erreur générée:
java.lang.NoClassDefFoundError: applet
(wrong name: com/test/applet/applet)


Je tourne en rond! g besoin d'aide.
Merci de votre compréhension.
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 juil. 2004 à 15:20
:big) Neodante :big)

Y a pas de structure de rep type pour une applet ... tes HTML vont soit dans un rep common, ext ou autres soit dans le bin (attention le bin est souvent écrasé et créé automatiquement lors de la construction automatisé de l'appli ...)

Ton prob viens du fait que tu mets le HTML dans le même rep que ta classe .... lorsque tu travailles avec des packages le nom de ta classe devient en réalité 'package.MaClasse' cad 'com.test.applet.Applet', les imports servent simpelment dans le code à ne pas répéter à chaque java.lang.String (paquet lang importé par défaut dans toutes les sources ...) mais simplement marqué String .... le compilo sait puisque le paquet est importé que c'est la classe situé dans java.lang qui est utilisé et non celle dans toto.mesclasses.String : résolution des conflits de nom !!!
Donc mets ton HTML à la racine de src et mets tout le chemin ... la machine virtuelle a besoin de tout le chemin ... com.test.applet.Applet.class !!
@+

[Responsable www.neogamedev.com]
0
RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004
1 juil. 2004 à 16:22
D'accord, j'ai compris, merci bcp neodante !!!
G mis ma page html à la racine du bin, et avec le chemin complet du package, et c ok!!!

Par contre, je me rends compte que je n'ai pas besoin de packages pour differencier mes applets en fait.
Dans le bin, je peux mettre:
- 1 folder pour les .class, .java.
- 1 folder pour les images
- 1 folder ext pour mon fichier html

Et lorsque je dois faire une nouvelle applet, je créé un nouveau projet avec ce type d'arborescence.
C'est bon??????

Par contre, je mets ou mon fichier Jar ainsi que le fichier java.policy.applet (à quoi sert-il?) ???
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 juil. 2004 à 19:50
:big) Neodante :big)

Tout compris !!!
Le JAR est la version compressé et empaqueté de ton applet et de ses ressources ... m'enfin y a d'autres choses à savoir concernant les JAR mais ce serait trop long à t'expliquer donc je te redirige vers Google ...
Le policy pour le moment ne te sert à rien je pense, c'est un fichier pour la sécurité et les accès que peux avoir ton applet sur la machine ...
@+

[Responsable www.neogamedev.com]
0
RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004
2 juil. 2004 à 10:19
euhh oué, pour le Jar je sais ce que c'est!
Mais encore merci! ;o)

Pour le policy, je dois certainement le changer car je voudrais lancer un JFileChooser de mon JApplet!
Bleme de acces denied... faut que je vois ça.

En fait, ma question etait la suivante:
Ou je place mon Jar et mon policy dans mon arborescence??
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 juil. 2004 à 13:10
:big) Neodante :big)

A la racine de ton JAR ...
@+

[Responsable www.neogamedev.com]
0
RealKEV1 Messages postés 50 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 30 décembre 2004
2 juil. 2004 à 15:01
Ok, donc mon policy doit se trouver ds mon repertoire ou il y a mes .class et .java!! Et donc, dans mon Jar lorsque je vais empaqueter le tout!
Mon Jar qui se trouvera à la racine (bin) avec mon .html!

G tout compris...

Je te remercie bcp pour ta patience et toutes ces explications neodante!

A+
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 juil. 2004 à 15:09
:big) Neodante :big)

De rien !! lol
@+

[Responsable www.neogamedev.com]
0
ZedPrime Messages postés 2 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 20 janvier 2006
20 janv. 2006 à 10:11
Bonjour,

je me permet de poster ici car j'ai une erreur similaire à : [auteurdetail.aspx?ID=294804 RealKEV1]

Je developpe à l'aide d'éclipse et j'utilise dans mon applet JFileChooser.

J'ai bien un fichier java.policy.applet à la racine de mon projet qui contient :



grant {

permission java.security.AllPermission;

};



Lorsque j'utilise le lanceur d'applet de Eclipse, tout va bien.

Mon projet est compacté comme un Jar qui contient le java.policy.applet à sa racine.

Lorsque j'utilise un browser html, (firefox ou ie), j'ai l'erreur suivante :



Exception in thread "AWT-EventQueue-2"
java.security.AccessControlException: access denied
(java.util.PropertyPermission user.dir 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.checkPropertyAccess(Unknown Source)

at java.lang.System.getProperty(Unknown Source)

at java.io.Win32FileSystem.getUserPath(Unknown Source)

at java.io.Win32FileSystem.resolve(Unknown Source)

at java.io.File.getAbsolutePath(Unknown Source)

at sun.awt.shell.Win32ShellFolder2.(Unknown Source)

...



je ne sais pas quoi faire

Avez-vous une idée

Par avance merci
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
20 janv. 2006 à 19:36
Salut,
e-tu sur que tu as bien modifié le fichier policy du JDK utilisé ??? Attention Eclipse à tendance à utiliser un autre de celuà qui ont pense !!! Pour savoir lequel est utilisé fait System.getProperty("java.home");

Pour les autres constantes : http://www.laltruiste.com/document.php?url=http://www.laltruiste.com/coursjava/propriete_systeme.html

++
0
ZedPrime Messages postés 2 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 20 janvier 2006
20 janv. 2006 à 20:03
Heuu ...

le fichier java.policy.applet dont j'ai mis le code source est
à la racine de mon projet , et c'est lui qui est compacté dans le .jar.
C'est donc forcément lui qui est utiliZé je pense.

Par ailleurs, lorsque je lance l'applet depuis eclipse, tout
fonctionne. C'est une fois encapsulé dans le .jar puis lancer depuis un
browZer que le probleme survient.

Quant à System.getProperty("java.home"); il me renvoie le path de jre1.5.0_06 dans lequel il n'y a aucun fichier policy
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
20 janv. 2006 à 20:14
Arf j'avais pas bien imprimé que c'était une applet ;-)

En fait il faut signer l'applet ce qui est normal, tu ne paux aps demander à quelqu'un des droits s'il ne sai tpa d'où sort l'applet !

Voici le lien parfait pour ta solution :
http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html

++
0
Rejoignez-nous