Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    37

    Codice java in una stringa

    Salve, ho un'applicazione che recupera comandi da eseguire tramite exec da un file xml. Uno di questi comandi è l'avvio del browser predefinito, che viene eseguito tramite
    codice:
    Desktop.getDesktop().browse(new URI("http://www.google.com"));
    Il problema è che quando recupero questa stringa dal file xml questa è appunto una stringa! Come posso eseguirla all'interno del codice java in cui viene richiamata?
    www.ariadifan.it - Ariadineve Official Fan Club -

    God save the Queen

    Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Codice java in una stringa

    Originariamente inviato da dvoran
    codice:
    Desktop.getDesktop().browse(new URI("http://www.google.com"));
    Il problema è che quando recupero questa stringa dal file xml questa è appunto una stringa!
    No un momento ... aspetta. Hai proprio tutto quello che hai postato sopra come stringa "Desktop......));" e vuoi "eseguirlo"??

    No, non è la cosa migliore, anche se tecnicamente con stratagemmi vari (e poco puliti) si potrebbe fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    37
    Eheh lo so che non è la cosa migliore, ma dal momento che avendo come stringa "java -jar BrowserControl.jar" (che contiene quella stringa e poco altro) mi da come errore:

    codice:
    java.io.IOException: Cannot run program "java_-jar_BrowserControl.jar": java.io.IOException: error=2, No such file or directory 
    	at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
     	at java.lang.Runtime.exec(Runtime.java:593)
     	at java.lang.Runtime.exec(Runtime.java:431)
     	at emaf.ActionAgent$1.action(ActionAgent.java:46)
     	at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:340)
     	at jade.core.Agent$ActiveLifeCycle.execute(Agent.java:1530)
     	at jade.core.Agent.run(Agent.java:1468)
     	at java.lang.Thread.run(Thread.java:619) 
    Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
     	at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
     	at java.lang.ProcessImpl.start(ProcessImpl.java:65)
     	at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
     	... 7 more
    Ho pensato di cercare di eseguire direttamente il codice, visto che quello, ovviamente mi funziona...

    PS: mi funziona anche se eseguo

    codice:
    Runtime.getRuntime().exec("java -jar BrowserControl.jar");
    In effetti sto impazzendo un po' per riuscire a trovare una soluzione
    www.ariadifan.it - Ariadineve Official Fan Club -

    God save the Queen

    Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Premesso che non ci ho capito nulla dell'ultimo post, ma il file xml non potrebbe essere "costruito" in modo intelligente, di modo che il tag che contiene la stringa:

    Desktop.getDesktop().browse(new URI("http://www.google.com"));

    fornisca anche informazioni sul tipo di comando, in un modo simile a questo:

    <browserCommand>http://www.google.com</browserCommand>

    ?
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    37
    Allora, ti rispondo e cerco di spiegare meglio il mio ultimo post...

    il file xml non può essere formato in questo modo perché deve essere scritto in modo standard ed ogni riga dell'xml contiene un'applicazione da avviare, un video da eseguire o altre operazioni varie... in base alla riga che mi serve (calcolata in altre parti del codice) mi ricavo l'applicazione da eseguire.

    L'errore segnalato nel post precedente mi viene ritornato da questa linea:

    codice:
    Runtime.getRuntime().exec(comando);
    dove "comando" è la stringa contenente il comando da avviare (e precisamente "java -jar BrowserControl.jar")

    PS: ho letto che potrebbe essere un problema di path, ma se nel file xml inserico il path assoluto del file .jar mi lanica sempre lo stesso errore segnalato nel post precedente.

    AIUTOOOOO!!!
    www.ariadifan.it - Ariadineve Official Fan Club -

    God save the Queen

    Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da dvoran
    dove "comando" è la stringa contenente il comando da avviare (e precisamente "java -jar BrowserControl.jar")
    Il comando che hai appena indicato è corretto dal punto di vista della sintassi.
    Ci sono "solo" 2 questioni: 1) l'eseguibile 'java' non è indicato con un path, quindi il sistema si aspetta di poterlo "trovare" in una directory nota o comunque in PATH e 2) BrowserControl.jar è indicato senza path quindi ci si aspetta che sia nella directory "corrente" e quale sia ..... non lo so certo io ... dipende da come/da dove hai lanciato la applicazione Java che sta facendo questa exec.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    37
    Prima di cercare di rispondere alle tue domande... te ne faccio una io (così magari mi chiarisco i dubbi che tengo):

    che differenza c'è tra:

    codice:
    String comando = "java -jar BrowserControl.jar"
    Runtime.getRuntime().exec(comando);
    e

    codice:
    Runtime.getRuntime().exec("java -jar BrowserControl.jar");
    Nel primo caso, ovviamente la stringa non gliela passo così ma "comando" recupera i dati dal file xml. E non ha problemi di spazi, perché prima di eseguire il comando ho fatto una
    System.out.println("*" + comando + "*");
    per controllare che non ci fossero spazi strani all'inizio e alla fine della stringa.

    Comunque il primo caso mi genera l'eccezione di cui sopra, mentre il secondo funziona perfettamente ed avvia un browser con la pagina di google.
    Se il primo ha un problema di path di java o di BrowserControl.jar, perché il secondo non li ha?

    Comunque, per completezza, avvio tutto in ambiente Eclipse, con il file BrowserControl.jar nella directory principale del progetto.

    Continua a seguirmi, mi stai facendo intravedere una luce in fondo al tunnel! Ah, no quello era il coma etilico!
    www.ariadifan.it - Ariadineve Official Fan Club -

    God save the Queen

    Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.