[Applet] java.lang.reflect.InvocationTargetException

Résolu/Fermé
Utilisateur anonyme - 6 nov. 2013 à 22:12
 Utilisateur anonyme - 7 nov. 2013 à 18:44
Bonjour,
Suite aux mises a jours de Java, j'ai du mettre a jour les manifest des .jar de mon applet.
Tout va bien jusque la. Je lance la commande pour modifier le manifest, je resigne mon applet je renvoi tout sur mon serveur.
C'est maintenant la que viens ce poser le problème ! j'utilise une interface graphique developé en html sur mon site et il travaille avec l'applet. Apres tests toute les focntion que j'apelle depuis javascript fonctionne sauf une ( comme d'habitude c'est la plus importante du programme ), elle me retourne simplement java.lang.reflect.InvocationTargetException . Le code quand a lui n'a pas changé ! Si ce n'est dans le html j'ai rajouter un tag en relation avec le manifest pour éliminer des warning dans le log.

voici les modification aporté au manifest :
Codebase: clangue.net
Permissions: all-permissions
Application-Library-Allowable-Codebase: clangue.net
Caller-Allowable-Codebase: clangue.net
Application-Name: ClangueRecorder

et voici donc le code Html qui apelle l'applet :

<applet type="application/x-java-applet" name="RecordSystem" code=fr.gv.AudioApplet.class
codebase="http://clangue.net/view/student/applet/"
archive="CLangueApplet.jar,..."
width = "400"
height = "100"
hspace = "0"
vspace = "0"
align = "center"
permissions="all-permissions">
<param name=W value="45">
<param name=U value="Username">
</applet>

Pour information dans les log de java que j'affiche via la console a chaque execution de l'applet, aucune erreur n'est visible ! la seul chose que je vois sont mes System.out.println ...

Si quelqu'un peux m'aider j'en serais ravis !
Merci en tous cas !

3 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
6 nov. 2013 à 22:22
Si tu as une java.lang.reflect.InvocationTargetException il faut creuser un peu, parce que ce n'est pas une exception en soit mais plutôt un "conteneur d'exception" il faut donc manipuler la méthode getTargetException() pour obtenir la "vraie" exception.
1
Utilisateur anonyme
7 nov. 2013 à 07:14
Merci mais ce que je ne comprend pas : c'est pourquoi j'ai le droit a cette erreur alors que juste avant tout fonctionnais et j'ai rien touche dans le code !
Dans la fonction appele je ne fait qu'appeler un thread.
Que dois je ajoute ou modifier pour avoir eventuellement des informations supplementaires sur l'erreur plutot que d'avoir le conteneur en lui meme.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
7 nov. 2013 à 07:37
Pourquoi ça marchait avant et plus maintenant on le saura quand on verra le détail de l'exception.
Si tu n'as que "java.lang.reflect.InvocationTargetException" c'est que tu as du faire un code qui masque la trace, genre
try { ... } catch (Exception e) { System.err.println(e); }
alors que pour déboguer, il faut au un
e.printStackTrace();
qui enverra la pile d'appel nous permettant de savoir où l'exception s'est déclenchée et qu'elle en est la cause.
Tu devrais donc avoir un gros pavé genre :

java.lang.reflect.InvocationTargetException
at la ligne qui provoque l'exception
at la ligne qui appelle la méthode qui provoque l'exception
at ...
caused by une première exception que l'on avait essayé de traiter
at la ligne qui avait provoqué la première exception
at la ligne de la méthode qui a provoqué la première exception
at ...
0
Utilisateur anonyme
7 nov. 2013 à 17:11
tres bien je vais faire cela !
Mais est ce que tu as une explication sur le fait que je vois sa dans la console javascript et non dans la console java ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > Utilisateur anonyme
7 nov. 2013 à 18:26
Je ne connais pas trop bien les applets. Mais peut être que ton erreur se produit avant même que l'applet n'ai démarré.
Pour bien comprendre j'aimerais savoir pourquoi tu as été obligé de recréer ton applet juste à cause d'un changement de version de Java...
0
Utilisateur anonyme
7 nov. 2013 à 18:44
ben je ne recrée pas l'applet ... j'ai mis a jour mon manifest.
J'ai résolu le problème d'une autre facon donc c'est bon ...
0
Voila mon code :
 public void UploadToServer() {

Thread thread = new Upload();
thread.start();

}

class Upload extends Thread {

public void run() {
File file = null;
if (file_chosed)
{

System.out.println("le fichier choisi est perso ");
System.out.println("start convettion");
file = toMp3();
}
else
{

System.out.println("le fichier choisi est record.wav ");
file = toMp3();

}
if (!file.exists())
{
try {
throw new Exception("le fichier est introuvable !");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

HttpPost httppost = new HttpPost("http://clangue.net/model/student/upload.php?w="+work+"&u="+User);
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file, "audio/x-wav");
mpEntity.addPart("userfile", cbFile);


httppost.setEntity(mpEntity);
System.out.println("executing request " + httppost.getRequestLine());
if(jso != null )
{
try {
jso.call("changeUploadStat", new String[] {"executing request"});
}
catch (Exception ex) {
ex.printStackTrace();
}

}
HttpResponse response = null;
try {
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HttpEntity resEntity = response.getEntity();

System.out.println(response.getStatusLine());

if(jso != null )
{
try {
jso.call("changeUploadStat", new String[] {response.getStatusLine().toString()});
}
catch (Exception ex) {
ex.printStackTrace();
}

}


if (resEntity != null) {
try {
String test = EntityUtils.toString(resEntity);
System.out.println(test);
if(jso != null )
{
try {
jso.call("changeUploadStat", new String[] {test});
}
catch (Exception ex) {
ex.printStackTrace();
}

}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
uploadState.setText("Envoyé avec succés");

progressBar.hide();
}
if (resEntity != null) {
try {
resEntity.consumeContent();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

httpclient.getConnectionManager().shutdown();

File file2 = new File(FileNameRecord);
if (file2.exists())
{
file2.delete();
}

}

}

la fonction est bien appeler par java-script mais je pense que le problème vient du thread. mais tout mes try son associé e.printStackTrace(); donc je ne comprend pas trop pourquoi je n'ai pas plus d'informations...

Edit : en fait le thread n'est pas exécuté !
0