je suis une nouvelle "zéro", j'ai un souci avec mon programme corba, je vous explique, j'ai creer un tableau de string dans mon fichir Impl pour y stocker les informations saisie par le clients mais à la compilation j'ai des exceptions, je voulais savoir s'il y'avait quelques choses a importer ou si en corba les ableau ça ne marche pas pareil que sous java
voila mon bout de code du fichier Impl
public String[] Enregistrement_location(String NumClient, String NumVelo,
String date_location) {
String location = new String[3];
location[0]=NumClient;
location[1]=NumVelo;
location[2]=date_location;
return location;
}
et cette partie c'est mon client
System.out.println("Votre numero client : ");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String numC = in.readLine();
System.out.println("Le numéro du vélo : ");
BufferedReader in2 = new BufferedReader(new InputStreamReader(System.in));
String numV = in2.readLine();
String time = "";
Date d = new Date();
Calendar c = Calendar.getInstance();
c.setTime(d);
time += c.get(Calendar.DATE);
time += "/" + c.get(Calendar.MONTH);
time += "/" + c.get(Calendar.YEAR);
time += " " + c.get(Calendar.HOUR);
time += ":" + c.get(Calendar.MINUTE);
monGestion.Enregistrement_location(numC,numV,time);
}
catch (Exception e) {
e.printStackTrace();
}
si quelqu'un peut m'eclairer, j'en serais vraiment reconnaissante, je suis débutante en corba et je bloque vraiment sur ça!
pour la déclaration de tableau, c'est bien comme j'avais fait, la solution de misterdi me mets une erreur et me propose de chenger le type
voici l'exception
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Unknown Source)
at com.sun.corba.se.impl.encoding.ByteBufferWithInfo.position(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_2.alignAndCheck(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_long(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.readStringOrIndirection(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_string(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_string(Unknown Source)
at monVeloc.locationHelper.read(locationHelper.java:98)
at monVeloc._Systeme_GestionStub.Enregistrement_location(_Systeme_GestionStub.java:143)
at monVeloc.Clients_location.main(Clients_location.java:75)
la ligne du location helper qui est pointé est la suivante :
public static String[] read(org.omg.CORBA.portable.InputStream istream)
{
String[] new_one;
{
int size7 = 3;
new_one = new String[size7];
for (int i7=0; i7<new_one.length; i7++)
{
new_one[i7] = istream.read_string(); // c'est celle là qui est pointé dans l'erreur
}
}
return new_one;
}
Dans le trace y a un readLong() qui traine, il fait partie du message? il y a bien un mécanisme de conversion long->String approprié?
hs:
{
int size7 = 3;
new_one = new String[size7];
for (int i7=0; i7<new_one.length; i7++)
{
new_one[i7] = istream.read_string(); // c'est celle là qui est pointé dans l'erreur
}
}
a priori, pas besoin de mettre un scope {} dans ta méthode.
merci d'avoi repondu,
c'est quoi un scope{} please? je n'ai pas mis de long, et je ne saisie nul part de long donc je ne comprend meme pas l'erreur vu que je n'ai pas chercher à mettre de long ni a le saisir
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_long(Unknown Source)
Voilà d'où vient le read_long dont shakal parle
Le scope ben je suppose que ça désigne juste les accolades. Si tu n'as qu'une seule instruction dans la boucle tu peux ommettre les accolades (ça rend le code légèrement plus visible).
ok, merci pour ta réponse, je voyais de quel ligne il parlais mais je ne comprenais pas d'où venais le read_long vu que que je n'ai cherché a le mettre nul part, pour le scope, c'est du code généré automatiquement, vu qu'on corba on fais un IDL et plein de fichiers sont généré (dont les fichier helper comme celui de locationhelper) c'est pour ça que je bloque encore plus vu que tout est normalement bien généré !
Ok c'est vrai que j'aide pas beaucoup pour le coup
Faudrait faire quelques tests...
Essaie de virer la boucle for par exemple et de remplir le tableau à la main.
new_one[0] = istream.read_string();
new_one[1] = ...
Oui à vrai dire ça m'aurait étonné.
Je viens de caler d'où vient ce istream.
Maintenant je cherche d'où vient l'erreur de Buffer qu'on peut voir dans la trace...
Je connais pas trop les termes relatifs à CORBA mais bon...
Sur d'autres forums les gens demandent l'IDL en général.
Enfin moi je regarderais d'abord du côté de monVeloc.locationHelper.read(_input);
Ca commence déjà à déborder de mon domaine de connaissances alors j'essaie de me renseigner un peu mais bon... Peut-être sur un autre forum plus spécialisé t'aurais plus de chances.
Tu es sure pour la déclaration du tableau ?
Je vois partout la déclaration habituelle de Java...
Quand tu dis que t'as testé la solution de misterdi, ça t'a mis une erreur. T'utilises un logiciel de développement ? Lequel ?
Autre option j'aurais tenté de modifier la méthode read :
public static String[] read(org.omg.CORBA.portable.InputStream istream)
{
String new_one;
int size7 = 3;
new_one = istream.read_string(); // c'est celle là qui est pointé dans l'erreur
return new_one;
}
l'IDL en corba ça se fait avant, c'est une sorte de contrat qui te permet de generé tes stub et tes skeleton et tous les fichiers helper et autre, dc je fichier que tu me suggere de modifier a été genéré automatiquement a partir de ma definition IDL, c'est pour ça ke je ne comprend pas comment ça peut etre faut vu ke normalement ça correspond a mon IDL
pour l'outil j'utilise eclipse
c'est bon je declare officielement detester corba!
oui ça permet de générer les codes mais si les codes générés marchent pas y'a pas un problème au niveau de cette IDL ??
Ou c'est pas toi qui la code (et là je comprends pu rien) ?
pour moi c'que j'comprends, c'est que ton fichier Impl, si c'est toi qui le code et si c'est du Java, la déclaration de tableau est mauvaise, peu importe ce que dit Eclipse (XD).
j'ai codé le fichier IDL, dans l'IDL tu declare tes interface, tes methodes, les type ke tu veux utiliser...et a partir de cette definition plein de fichier sont generé
le fichier impl c'est bien moi ki l'ai fait, desolée mais g du effacé [] en fesant la mise en page sur le site, mais c bien comme la suggestion
String[] location = new String[3];
je cherche encore...si je trouve la solution je poste!
aaaaah trop fooort, j'ai essayé ta definition dans l'IDL et tot marche, je declaré ça en
typedef sting location[3]
et c'etait ta definition qu'il fallait mettre
merci merci merci merci mille fois pour ton aide (et pour votre aide à tous)
je vous souhaite a tous une bonne soirée
Array en java / croba
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
"'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll
"'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll
et c'etait ta definition qu'il fallait mettre