Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Java > Développement Web en Java > Applets

Applets Vos questions sur les Applets

Réponse
 
Outils de la discussion
Vieux 13/11/2008, 15h12   #1 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut Applet fonctionne sous eclipse mais pas sous FF

Salut à tous
J'ai fais un programme Java qui fonctionne parfaitement, à souligner
Je l'ai modifié afin de le transformer en applet... et là lorsque je le teste en tant qu'applet java dans eclipse, il fonctionne toujours parfaitement. Mais lorsque je le met dans une page html et le lance sous FF ou IE, plus rien.

Le but du prgm est de poser des questions qui sont contenues dans un fichier texte, et il semble qu'il n'arrive pas à ouvrir le fichier en question... qui pourtant existe bien, et est dans le même dossier que la page...

Si quelqu'un à une petite idée de ce qu'il se passe :s

Merci
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 17h08   #2 (permalink)
Membre Confirmé
 
Avatar de kmdkaci
 
Date d'inscription: octobre 2007
Localisation: France
Messages: 268
Envoyer un message via Skype™ à kmdkaci
Par défaut Applet fonctionne sous eclipse mais pas sous FF

Bonjour,
Est ce que tu peux nous poster la partie du code concerné ?
Il se peut qu'il s'agit des droits d'accées. sachant que ce probléme ne se pose pas quand on exécute sous AppletViewer
Merci

Dernière modification par kmdkaci ; 13/11/2008 à 19h00
kmdkaci est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 18h01   #3 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

Voilà ma méthode perso qui e permet de lire dans un fichier apres une "marque"

Code :
public String lireMarque(String mark, boolean lireApres){
		//retourne la ligne commencant par une marque
		String fichier = lire();
		String retour;
		
		int index = fichier.indexOf(mark); //recherche la premiere occurence de mark
		fichier = fichier.substring(index);
		index = 0;
		int indexFin = (fichier.indexOf("\n"));//recherche la fin de ligne
 
		if (lireApres)//deplace la tete de lecteur apres la marque
			index += mark.length();
		
		if (indexFin != 0)
			retour = fichier.substring(index, indexFin);
		else
			retour = fichier.substring(index);
		
		return retour;
	}
Je pensais aussi aux droits d'accès, mais je ne sais pas comment ils sont gérés, par quoi... Si tu as plus d'infos je suis preneur

Merci

Dernière modification par quentin06 ; 13/11/2008 à 18h25
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 19h08   #4 (permalink)
Membre Confirmé
 
Avatar de kmdkaci
 
Date d'inscription: octobre 2007
Localisation: France
Messages: 268
Envoyer un message via Skype™ à kmdkaci
Par défaut Applet fonctionne sous eclipse mais pas sous FF

D'abord que fait l'Applet sous le navigateur ? Parce que quand tu dis ça marche pas , c'est vague ! Est ce qu'il y a un message d'erreur? Dans ce cas cliques droit sur le carée de l'Applet et faites afficher le message.

Pour les droits d'acées, saches que tu ne peux pas pas accéder à un endroit autre que celui de l'Applet (il teste ça par rapport à la racine du chemin, comme par example http://www.monsite.....
Aussi l'Applet ne peux pas écrire sur le poste client, sauf s'elle est signée.
kmdkaci est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 20h56   #5 (permalink)
Invité de passage
 
Date d'inscription: novembre 2008
Messages: 4
Par défaut mettre l URL complet

bonsoir tt le monde,

as tu essayer d ajouter l'option CODEBASE="file:///C:\Users\...\X" où X est le dossier de ton projet?

ps: si ta classe Bonjour.class se trouve ds le dossier X1\X2\...\Xi alors mettre la valeur de Code à "X1.X2. ... . Bonjour.class"

ps: evidemment ceci est valable si ta classe se trouve sur ton ordi... sinon au lieu de "file..." il faudra mettre "http..."
Flagada Johnes est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 21h33   #6 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

Pour kmdkaci :
La console Java m'indique "Fichier innaccessible" qui provient de la méthode lire()
Code :
	public String lire (){
		try {
			String s = "";
			String fin;
			
			FileReader fr = new FileReader(nomFichier);
			BufferedReader buffer = new BufferedReader(fr);
			
			do {
				fin = buffer.readLine();
				if (fin != null)
					s += "\n"+fin;
			}while (fin != null);

			buffer.close();
			return s;
			
		} catch (Exception e){
			System.out.println("Fichier inaccessible");
			return("");
		}
	}
C'est pour ca que je disais que leproblème est du à l'ouverture (la non ouverture) du fichier en question)
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 21h38   #7 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

Pour Flagada Johnes :

J'ai fais comme tu dis, mais maintenant il ne trouve plus la class :s

Code :
<html>
	<head>
		<title>Applet JAVA</title>
	</head>
	<body>
		<applet code = "AppletCode.class" CODEBASE="file:///C:\Users\Quentin\Documents\T46\Code1 archive = "CodeTest.jar" width = "400" height="300">
		</applet> 
	</body>
</html>

Code :
charger : classe AppletCode.class introuvable.
java.lang.ClassNotFoundException: AppletCode.class
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: C:\Users\Quentin\Documents\T46\Code1 archive =\AppletCode\class.class (Le chemin d'accès spécifié est introuvable)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
	at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
	at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
	at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
	at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	... 7 more
Exception : java.lang.ClassNotFoundException: AppletCode.class

Merci à tous les deux pour votre aide !!!
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 12h49   #8 (permalink)
Membre Confirmé
 
Avatar de kmdkaci
 
Date d'inscription: octobre 2007
Localisation: France
Messages: 268
Envoyer un message via Skype™ à kmdkaci
Par défaut Applet fonctionne sous eclipse mais pas sous FF

Bonjour,
Deux choses :
1- Pour ce qui est de l'erreur Fichier inaccessible, c'est ton message lors de la levée de l'excpetion. je te conseille que lors du développement, vaut mieux afficher l'excpetion elle même
Code :
(System.out.println("Erreur : "+e)
on saura plus sur le détail.

2 - Quand tu écris :
Citation:
CODEBASE="file:///C:\Users\Quentin\Documents\T46\Code1
Pourquoi ne pas mettre ton Applet au même endroit que le fichier HTML, ça t'evite des liens en dure avec file///c:... qui ne sont pas portable.

A mons avis ton probléme est simple à résoudre si tu respectes ces indications.

Merci
kmdkaci est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 13h02   #9 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

Merci beaucoup pour les réponses.

Je confirme j'ai bien la classe dans le même dossier que la page html, mais je ne comprend pas la syntaxe du CODEBASE, je vais chercher sur google...

Mais l'important me semble être ceci
Code :
Erreur : java.security.AccessControlException: access denied (java.io.FilePermission Questions.txt read)
 
Comment obtenir les droits d'accès ?

Merci
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 13h59   #10 (permalink)
Membre Confirmé
 
Avatar de kmdkaci
 
Date d'inscription: octobre 2007
Localisation: France
Messages: 268
Envoyer un message via Skype™ à kmdkaci
Par défaut Applet fonctionne sous eclipse mais pas sous FF

Re,
Bah CodeBase c'est pour indiquer le répertoire où se trouve ta classe. Imagine que t'as un répertoire Rep1 qui contient ta page HTML, et Rep2 qui est dans Rep1 contient ta classe. Dans ce cas tu fais CODEBASE="Rep2"
Mais si ta classe est dans le même répertoire que ta page HTML, tu n'auras pas besoin de l'option CODEBASE.

En ce qui concerne le message :
Citation:
Erreur : java.security.AccessControlException: access denied (java.io.FilePermission Questions.txt read)
C'est que tu n'as pas les droits d'accéder là tu veux lire ton fichier. Ton fichier se situe où relativement à ta classe Applet ?
kmdkaci est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/11/2008, 13h07   #11 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

Merci,
Pour le moment afin de simplifier les choses, j'ai mes 3 fichiers qui sont dans le même répertoire, ma classe, mon fichier texte et mon fichier html.

La chose bizarre c'est que mon fichier texte est dans un répertoire dans lequel j'ai tous les droits, enfin à priori... (je suis pas encore sur serveur, je fonctionne en local)
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/11/2008, 16h00   #12 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

J'arrive à ouvir le fichier .txt, en fait il faut savoir qu'un applet ne peux pas accéder à un fichier, ou à n'importe quoi s'il n'est pas signé.
Pour ceux que ca interresse voici là solution expliquée :
ici

Maintenant le l'applet arrive à lire le fichier texte, mais plante toujours :s

Code :
 
Exception in thread "thread applet-AppletCode.class-4" java.lang.NoClassDefFoundError: Code
	at AppletCode.start(AppletCode.java:10)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
 
Voici le code de mon applet
Code :
public class AppletCode extends Applet{
	
	Code code;
	Frame frame;
	
     public void init(){
    	 code = new Code("Questions.txt");
     }
     public void start(){
		frame = new Frame(code.nouvelleDiapo(1), code);
	 }
     public void paint(Graphics g){}
}
à coté de ce fichier .class, j'ai bien le jar qui contient les classes Code et Frame

Si quelqu'un a une chtite idée, je suis preneur :s

@ plus je vous tiens au jus

Dernière modification par quentin06 ; 17/11/2008 à 16h16
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/11/2008, 12h46   #13 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

euhhhh
Aujourd'hui je n'ai plus le même message d'erreur :s:s
mais je ne le comprend pas plus que le précédent.

Si quelqu'un peut m'aider

Code :
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
	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.checkExit(Unknown Source)
	at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
	at Frame.<init>(Frame.java:29)
	at AppletCode.start(AppletCode.java:11)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Exception : java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
 
Merci

PS petite question, est-ce qu'un applet est capable d'ouvrir une JFrame ?

Dernière modification par quentin06 ; 18/11/2008 à 13h25
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/11/2008, 15h20   #14 (permalink)
Membre Confirmé
 
Avatar de kmdkaci
 
Date d'inscription: octobre 2007
Localisation: France
Messages: 268
Envoyer un message via Skype™ à kmdkaci
Par défaut Applet fonctionne sous eclipse mais pas sous FF

bah le message dit que tu n'as pas le droit d'y accéder. tu essayes d'acceder (de modifier) un fichier en local... Dans le pire des solutions, essayes de signer ton Applet.
Pour ta 2em question Applet --JFrame, saches que l'Applet derive de JPanel et non de JFrame. Mais que veux-tu obtenir exactement ?
kmdkaci est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/11/2008, 15h23   #15 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2007
Localisation: Blagnac
Âge: 20
Messages: 43
Par défaut

Merci pour ta réponse, je l'espérait même plus.
Mais ce que je ne comprend pas c'est que mon applet est signé...

Ensuite j'ai vu sur un autre forum, qu'un applet ne pouvait pas ouvrire une JFrame.. mais je suis étonné, tu confirme ?

Le but de l'applet est d'ouvir une JFrame qui contient du texte et une image, ce texte se trouvant dans le fichier texte...

Merci
quentin06 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS JAVAFAQsTUTORIELSJAVASEARCHSOURCESLIVRESOUTILS, EDI & APIECLIPSENETBEANSBLOGDISCUSSIONSTV

Réponse

Précédent   Forum des développeurs > Java > Développement Web en Java > Applets



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide