Récupérer une erreur de methode inexistante - Java - Programmation
Marsh Posté le 24-07-2002 à 14:14:04
c'est parce que la vérification de l'erreur se fait au chargement de la classe ... pas lors de l'appel.
Il faut que tu fasse un appel dynamique de la méthode (tonObjet.getClass().getMethod("taMethod", new Class[] {tonTableauDeType}).invoke(new Object[]{tesParams}).
La dessus, tu pourras catcher le NoSuchMethodException
Marsh Posté le 24-07-2002 à 14:15:55
benou a écrit a écrit : c'est parce que la vérification de l'erreur se fait au chargement de la classe ... pas lors de l'appel. Il faut que tu fasse un appel dynamique de la méthode (tonObjet.getClass().getMethod("taMethod", new Class[] {tonTableauDeType}).invoke(new Object[]{tesParams}). La dessus, tu pourras catcher le NoSuchMethodException |
Je suis preneur d'un topo là dessus, à l'occasion, ô
Marsh Posté le 24-07-2002 à 14:17:42
Cherrytree a écrit a écrit : Je suis preneur d'un topo là dessus, à l'occasion, ô |
sur quoi ? l'invocation dynamique ?
Marsh Posté le 24-07-2002 à 14:18:06
Cherrytree a écrit a écrit : Je suis preneur d'un topo là dessus, à l'occasion, ô |
et puis c'est juste pour le moment ...
Marsh Posté le 24-07-2002 à 14:34:09
benou a écrit a écrit : et puis c'est juste pour le moment ... |
ça m'a tout l'air de marcher ?!
Marsh Posté le 24-07-2002 à 14:34:49
Cherrytree a écrit a écrit : ça m'a tout l'air de marcher ?! |
je viens de le changer
Marsh Posté le 24-07-2002 à 14:41:39
Cherrytree a écrit a écrit : Je suis preneur d'un topo là dessus, à l'occasion, ô |
moi aussi je suis preneur, car j'ai pas bien tout pigé !
Marsh Posté le 24-07-2002 à 14:47:33
benou a écrit a écrit : sur quoi ? l'invocation dynamique ? |
OUIIIIIII !
Marsh Posté le 24-07-2002 à 14:56:25
bon je vais tester
c'est vrai que j'avais po penser que ca venez avec l'invocation lors du classloader
Marsh Posté le 24-07-2002 à 15:14:26
Cherrytree a écrit a écrit : OUIIIIIII ! |
heu ... ben on verra ca ce soir ... si j'ai le temps après le tennis.
faut quand même que je bosse un minimum pour mériter mon salaire ...
Marsh Posté le 24-07-2002 à 15:16:32
benou a écrit a écrit : heu ... ben on verra ca ce soir ... si j'ai le temps après le tennis. faut quand même que je bosse un minimum pour mériter mon salaire ... |
Pas faux. Bon tennis.
Marsh Posté le 24-07-2002 à 21:41:04
Voila j'ai encore un prob :
Font f;
Class ff=f.getClass();
Method g=ff.getMethod("createFont",new Class[]{int,InputStream});
g.invoke(new Object[]{Font.TRUETYPE_FONT,is});
ca ne marche po car il me demande une classe et int n'en est po une.
Comment faire?
Marsh Posté le 24-07-2002 à 22:09:27
ca y est ca marche pour ce que ca interesse, ma methode pour charger verdana
Code :
|
Marsh Posté le 24-07-2002 à 23:16:28
par contre impossible de transcrire
String fontNames[] =GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
pour pouvoir en gérer les exception
Marsh Posté le 24-07-2002 à 23:30:31
kakou a écrit a écrit : ca y est ca marche pour ce que ca interesse, ma methode pour charger verdana
|
il est très bizarre ton code, je me permet de le nettoyer ...
Code :
|
c'était bizarre ton forName instanceOd Class du départ ... je comprend pas bien à quoi il servait ...
Marsh Posté le 24-07-2002 à 23:31:45
kakou a écrit a écrit : par contre impossible de transcrire String fontNames[] =GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); pour pouvoir en gérer les exception |
hein ???
Marsh Posté le 24-07-2002 à 23:40:27
oui j'ai po encore nettoyer la classe getDF
pour le debut je sais po c'est un copier coller et j'ai po trop regarder comme ca marcher mais ca doit verifier si c'est bien une class???
pour le reste j'en suis la
Code :
|
il gére bien les exception mais il trouve po la classe
GraphicsEnvironment
qui est dans java.awt.* ( c'est une classe abstraite je crois)
si tu sais comment faire
Marsh Posté le 24-07-2002 à 23:42:00
En faite le tous c'est pour faire une gestion des font compatible avec les nouvelle methode du 1.3 mais comme c'est un applet je veux qui soit aussi compatible avec 1.1
d'ou la gestion des exception
Marsh Posté le 24-07-2002 à 23:54:08
kakou a écrit a écrit : si tu sais comment faire |
bha oui ... faudrait que tu l'appele par son vrai nom la classe : java.awt.GraphicsEnvironment
Code :
|
Marsh Posté le 24-07-2002 à 23:55:12
kakou a écrit a écrit : pour le debut je sais po c'est un copier coller et j'ai po trop regarder comme ca marcher mais ca doit verifier si c'est bien une class??? |
ok mais ca sert à rien : Class.forName renvoie une Class. A quoi ca sert de le tester ?
Marsh Posté le 24-07-2002 à 23:58:52
oui j'ai relu et c'est vrai que ca sert a rien
--------
j'ai vu le java.awt mais j'avais tester et ca marcher po et la ca marche, surememnt un mauvais copier/coller
Marsh Posté le 25-07-2002 à 00:02:19
kakou a écrit a écrit : oui j'ai relu et c'est vrai que ca sert a rien -------- j'ai vu le java.awt mais j'avais tester et ca marcher po et la ca marche, surememnt un mauvais copier/coller |
c'est bon pour le Graphique Environnement ?
Marsh Posté le 25-07-2002 à 00:03:17
String fontNames[]= getToolkit().getFontList();
try{
Class cl = Class.forName("java.awt.GraphicsEnvironment" );
(cl.getMethod("getLocalGraphicsEnvironment",null))
.invoke(cl,null);
(cl.getMethod("getAvailableFontFamilyNames",null))
.invoke(fontNames,null);
}catch(Exception e){
System.out.println("4"+e);
}
------------------
et il me sort comme erreur
java.lang.IllegalArgumentException: object is not an instance of declaring class
Marsh Posté le 25-07-2002 à 00:28:21
faut pas mettre null, faut utiliser des tableaux vides
Code :
|
Marsh Posté le 25-07-2002 à 00:33:25
tjrs le meme prob
java.lang.IllegalArgumentException: object is not an instance of declaring class
Marsh Posté le 25-07-2002 à 00:35:18
ca viens de la
cl.getMethod("getAvailableFontFamilyNames",new Class[] {}).invoke(fontNames,new Object[] {});
------------------------------------
getAvailableFontFamilyNames
public abstract String[] getAvailableFontFamilyNames()
Returns an array containing the names of all font families available in this GraphicsEnvironment. Typical usage would be to allow a user to select a particular family name and allow the application to choose related variants of the same family when the user specifies style attributes such as Bold or Italic.
This method provides for the application some control over which Font instance is used to render text, but allows the Font object more flexibility in choosing its own best match among multiple fonts in the same font family.
Returns:
an array of String containing names of font familiesSince:
1.2See Also:
getAllFonts(), Font, Font.getFamily()
Marsh Posté le 25-07-2002 à 00:40:31
ok j'avais pas vu : c'est une classe abstraite ...
C'est quoi l'objet sur lequel tu veux appeler ces méthodes ?
parce que là, c'est un peu n'importe quoi : pour le 1er invoke , tu l'appelles sur l'objet Class
pour le 2e, tu l'appelles sur un tableau.
t'es sur que tu sais t'en servir de cette classe ? c'est pas un problème d'invocation dynamique là ...
Marsh Posté le 25-07-2002 à 00:43:34
ca devrait t'aider : http://sunsite.ccu.edu.tw/java/tut [...] ction.html
Marsh Posté le 25-07-2002 à 00:44:08
getLocalGraphicsEnvironment
public static GraphicsEnvironment getLocalGraphicsEnvironment()
Returns the local GraphicsEnvironment.
Returns:
this GraphicsEnvironment.
-------------------------
getAvailableFontFamilyNames
public abstract String[] getAvailableFontFamilyNames()
---------------------------
String fontNames[] =GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
ca ca marche mais ca genere une erreur avec 1.1 car les classes n'existe po
Marsh Posté le 25-07-2002 à 00:45:48
oui mais ca marche po avec les ancienne jvm genre win 98
donc je voudrais capturer les erreur et sica marche po utiliser l'ancienne methode
getToolkit().getFontList();
Marsh Posté le 25-07-2002 à 00:50:41
kakou a écrit a écrit : ca ca marche mais ca genere une erreur avec 1.1 car les classes n'existe po |
tu pourrais chercher un peu quand même ou au moins poser les bonnes questions à la place d'attendre que je fasse ton truc ...
Code :
|
Marsh Posté le 25-07-2002 à 00:51:13
en faisant ca :
cl = Class.forName("java.awt.GraphicsEnvironment" );
Object cl2=(cl.getMethod("getLocalGraphicsEnvironment",null))
.invoke(null,null);
System.out.println(cl2.getClass().getName());
j'obtient bien :
sun.awt.X11GraphicsEnvironment
mais apres tjrs la meme erreur
Marsh Posté le 25-07-2002 à 00:51:49
kakou a écrit a écrit : oui mais ca marche po avec les ancienne jvm genre win 98 donc je voudrais capturer les erreur et sica marche po utiliser l'ancienne methode getToolkit().getFontList(); |
ok, mais tu fais des gros copier/coller sans essayer de comprendre ... tu fais des invoke sur n'importe quel objet ... est ce que t'es allé lire la javadoc de Method.invoke au moins ?
Marsh Posté le 25-07-2002 à 00:54:18
ok merci ca marche mais je n'attendais po que tu me donne la reponse, ca fais deux heure que je cherche ... c'est juste que je connais pas encore tres bien cette partie de java
enfinmerci ca marche mais j'y etait presque
Marsh Posté le 25-07-2002 à 00:54:42
kakou a écrit a écrit : en faisant ca : cl = Class.forName("java.awt.GraphicsEnvironment" ); Object cl2=(cl.getMethod("getLocalGraphicsEnvironment",null)) .invoke(null,null); System.out.println(cl2.getClass().getName()); j'obtient bien : sun.awt.X11GraphicsEnvironment mais apres tjrs la meme erreur |
déjà t'as du bol d'obtenir ca parce que les 2e arguments ne devraient pas être null ...
ensuite regarde au dessus pour la solution
Marsh Posté le 25-07-2002 à 00:55:16
pour cette partie la j'ai fait aucun copier/coller,
oui j'ai été voir la javadoc mais je suis po trop bilingue
Marsh Posté le 25-07-2002 à 00:56:17
kakou a écrit a écrit : ok merci ca marche mais je n'attendais po que tu me donne la reponse, ca fais deux heure que je cherche ... c'est juste que je connais pas encore tres bien cette partie de java enfinmerci ca marche mais j'y etait presque |
ouep
mais à l'avenir lit bien la javadoc des méthodes ou classes que tu utilises sans les connaîtres :
1 - tu apprendras plein de trucs
2 - tu éviteras de passer 2 heures à chercher pour rien !
Marsh Posté le 24-07-2002 à 13:05:56
voila je veux faire un truc de chargement de font pour un apllet mais les methode n'existe po dans les ancienne jvm
alors je voudrais l'erreur NoSuchMethodError pour en passer d'autre qui existe.
Mais je n'aarive po a récuperer ni avec un java.lang.NoSuchMethodError
ni avec un Exception
ni avec un error
(dans des try{ }catch(){ } bien sur )
si quelqu'un sait comment faire