[Applet] java.lang.reflect.InvocationTargetException
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
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 :
et voici donc le code Html qui apelle l'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 !
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 !
A voir également:
- Caused by java.lang.reflect.invocationtargetexception
- Le terme «pip» n'est pas reconnu comme nom d'applet de commande - Forum logiciel systeme
- Problème PIP - Forum Python
- Le terme «npm» n'est pas reconnu comme nom d'applet de commande - Forum Téléphones & tablettes Android
- APPLET avec PHP - Forum PHP
- Problème pip ✓ - Forum Python
3 réponses
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.
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.
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.
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
Tu devrais donc avoir un gros pavé genre :
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 ...
Voila mon code :
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é !
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é !