Java:commande exec

j ai recupere ce code sur internet que j ai adapter :
String a=o;

        Properties sys = System.getProperties();
        String os = sys.getProperty("os.name");
        Runtime r = Runtime.getRuntime();
        try {
        if (os.endsWith("NT")||os.endsWith("2000")||os.endsWith("XP"))
        r.exec("cmd /c start [http://192.168.1.2/intranet/".append(a));](http://192.168.1.2/intranet/".append(a));)
        else
        r.exec("start [http://serveur/intranet/");](http://serveur/intranet/");)
        } catch (IOException ex) {
        ex.printStackTrace();
        }

ms il me met une erreur au niveau du .append(a) il me met The method append(String) is undefined for the type String

pourquoi vu que tout est en string?

merci

C’est normal… les chaînes de caractères en java sont non mutables, et append signifie dans ce cas que tu veux ajouter à la suite de la chaîne quelque chose.

Essaye concat, ou simplement la javadoc de String?

Bonjour,
Sur String, c’est l’opérateur" +"
String a=“toto”+“tutu”
ou alors
a += “titi”;
Donc simplement
r.exec("cmd /c start http://192.168.1.2/intranet/"+ a);

Les String sont effectivement “non mutable”, la méthode “append” fait partie de la classe StringBuffer, qui elle est mutable, mais qu’il faut convertir en Sting par toString();
:slight_smile:

autant pour moi effectivement ainsi ca marche bien.

j ai voulu faire une condition…sans aller chercher très loin:


String appele = "essai".concat(this.called);
Log.log("coucou :"+appele);
if("essai48"==appele)
    	{
//le reste du code
}

et la condition ne marche JAMAIS
Pourtant Log.log("coucou :"+appele); donne bien : "coucou:essai48

je ne comprends pas et c est pas la première fois que ca m’arrive

EQUALS !!
désolé, mais il faut le dire bien fort pour que ça rentre. :smiley:
En Java, presque tout est Objet, les String en font partie, et il faut tester son égalité par “toto”.equals(variable).
== c’est réservé aux types primitifs (non objet) ou aux égalité de référence(donc de pointeur).

Les références des String peuvent être égales(mais mieux vaut ne pas compter dessus): - sur les constantes, -sur les String internalisés par la JVM avec la methode intern()

rahhhhhhh
si simple et ca marche nickel
tu as raison de le dire bien fort car je m’étais deja fait avoir par exactement la meme erreur et le meme oubli!

merci bien!

pss :

bool operator == (const char* &a, const char* &b) {
  return 0 == strcmp(a, b);
}

:smiley:

Oui, je sais, le Java a eu le bon gout de ne pas mélanger méthode et opérateurs, contrairement au C++ :D.

(hum avant de prendre une volée, c’est une boutade hein )

deltree sort ->[]

et comme ça tu te gourre entre référence et reste :stuck_out_tongue:

(sans déconner, j’adore le concept de surchage d’opérateur!)

comment avec le code initial pour obligatoirement ouvrir une nouvelle fenetre web?

car actuellement si pas de fenetre ouverte ca en ouvre 1 pas de soucis mais si il y an une fenetre ouverte le logiciel utilise celle la pour afficher ce que le prg veut…en virant ce qu on faisait avant sur la page

merci d avance

C’est une option du browser: sous ff tu peut activer nouvel onglet ou nouvelle fenêtre, idem sous IE option avancée “reuse Window”.
Si tu n’a pas la main sur la config, tu peux tenter de lancer l’application ie ou ff au lieu de start, mais là, c’est très dépendant de l’install et surtout tu force à utiliser un browser.
"explorer http://www.clubic.fr"

j’ai essayé de lancer un url par 'start javascript:window.open(‘http://www.clubic.fr’) mais ça ne marche pas (pbm de sécu?), tu peux essayer de creuser la piste…

oui j ai remarque que ff ne posait pas de pb grace aux onglets…

bon j ai 3 solutions:

  • imposer a tout le monde ff
  • attendre IE7
  • trouver une autre solution…

tu penses qu on peut lancer comme ca le javascript par un start? je pense que de base tu peux pas…
par contre c est koi ce "reuse windows" je l ai pas vu?

Chez moi ça ne marche pas en tout cas, mais il y a des paramètres de sécurité parano.

Sous IE6 anglais: Tools/Internet Options puis Advanced/browsing-reuse window.
Tu décoche cette case et ça ouvre une nouvelle fenêtre si le site n’est pas déjà ouvert, ça rejoint un peu ce que tu veux. :slight_smile: