Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [JAVA] exec()

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    158

    [JAVA] exec()

    Ho un problema con il seguente comando :
    Runtime.getRuntime().exec("gedit"); in questo caso funziona benissimo , mi apre un nuovo documento con gedit

    adesso vorrei lanciare il terminale :
    Runtime.getRuntime().exec("/bin/bash"); però nn succede nulla...
    ho provato anche a lanciare uno script Runtime.getRuntime().exec("/bin/bash /home/usr/script.sh");

    suggerimenti
    Grazie


    posto il codice completo x essere più chiaro :

    Process theProcess=null;
    //Runtime.getRuntime().exec("gedit");

    try
    {
    theProcess = Runtime.getRuntime().exec("/bin/bash");
    }

    catch(IOException e)
    {
    System.err.println("Error on exec() method");
    e.printStackTrace();
    }

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

    Re: [JAVA] exec()

    Originariamente inviato da Daikin
    adesso vorrei lanciare il terminale :
    Runtime.getRuntime().exec("/bin/bash"); però nn succede nulla...
    Perché la bash è solo l'interprete che esegue (interattivamente o no) dei comandi .... non è il "terminale" o "console", come tu voglia chiamarlo.
    Se vuoi aprire la finestrella dove scrivere comandi, devi avviare che so ... "konsole" (la console di KDE) o "xterm" o altro programma di gestione di un terminale/console.
    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
    Jun 2010
    Messaggi
    158

    Re: Re: [JAVA] exec()

    Originariamente inviato da andbin
    Perché la bash è solo l'interprete che esegue (interattivamente o no) dei comandi .... non è il "terminale" o "console", come tu voglia chiamarlo.
    Se vuoi aprire la finestrella dove scrivere comandi, devi avviare che so ... "konsole" (la console di KDE) o "xterm" o altro programma di gestione di un terminale/console.

    Grazie finalmente ho lanciato il terminale ( con xterm ) , solo che è leggermente diverso da quello "originale" , in pratica l'aspetto grafico è diverso.... uso ubuntu 9.10 , mi sapresti dire se è possibile lanciare " quello originale " , in pratica se al posto di xterm c'è qualkosa di più appropriato x ubuntu.

    Mi potresti suggerire anke come si lancia un eseguibile ( per esempio presente sul desktop ) , ho provato in questo modo ma nn va :

    theProcess = Runtime.getRuntime().exec("/home/usr/Scrivania/prova.sh");

    l'output non restituisce nessun errore , il percoso è corretto , solo che lo script non viene eseguito

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    158
    ho risolto con il lancio del terminale : x-terminal-emulator

    per piacere qualkuno mi potrebbe spiegare bene cosa devo inserire nell'exec ?

    theProcess = Runtime.getRuntime().exec("/home/usr/Scrivania/prova.sh");

    l'output non restituisce nessun errore , il percoso è corretto , solo che lo script non viene eseguito

    Grazie

    in pratica vorrei un chiarimento su cosa si deve scrivere all'interno dell'exec.....
    sia x windows che linux

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Daikin
    theProcess = Runtime.getRuntime().exec("/home/usr/Scrivania/prova.sh");

    l'output non restituisce nessun errore , il percoso è corretto , solo che lo script non viene eseguito
    Prima questione: prova.sh ha l'attributo di "eseguibile"?? Sui unix/linux non basta che sia un "normale" file leggibile/scrivibile. Ma dovrebbe essere ok nel tuo caso, altrimenti ti dovrebbe lanciare IOException, se non sbaglio.

    Seconda questione: cosa fa lo script? Si aspetta dello standard-input e/o scrive su standard-output/error? Una lancio del genere non crea alcuna "console", insomma se lo script non lancia applicazioni "grafiche" o qualcosa del genere tu non "vedi" nulla.
    Gli stream input/output/error sono rediretti dal runtime Java e li puoi gestire prendendoli con i metodi in Process. E in particolare se il processo fa molto output, allora devi leggerlo, altrimenti per questioni interne di buffering potrebbe bloccarsi il processo lanciato!

    Originariamente inviato da Daikin
    vorrei un chiarimento su cosa si deve scrivere all'interno dell'exec.....
    sia x windows che linux
    Scusa ma non è che ci sia granché da chiarire ..... a exec() come primo elemento va passato il nome di un "eseguibile" ... ovviamente qualunque cosa venga considerata come "eseguibile" dal S.O.
    Su Windows può essere un .exe o un .bat o altro (es. .wsh, .vbs ecc...). Sui linux può essere un eseguibile "nativo" o un file di script della shell marcato come esegubile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    158
    Grazie mi hai chiarito molti dubbi

    sia per quanto riguarda lo script lanciato , che in effetti era un eseguibile ma effettuava semplicemente una stampa con "echo" non lanciando nessun terminale , tale chiamata nn produceva nessun input.

    Poichè io devo lanciare le installazioni di alcuni programmi , su diversi sistemi operativi , in particolare Debian RedHat e Windows , le seguenti chiamate sono tutte corretto

    1. Debian ----> theProcess = Runtime.getRuntime().exec("eseguibile.deb");
    2. RedHat ----> theProcess = Runtime.getRuntime().exec("eseguibile.rpm");
    3. Windows ----> theProcess = Runtime.getRuntime().exec("eseguibile.msi o .exe");

    dove nell'exec() inserisco il path completo del file , e x windows msi ed exe sono equivalenti ?

    le 3 chiamate precedenti ( 1-2-3 ) lanciano le installazioni dei programmi e vengono gestite indipendentemente dall'applet java ?

    Grazie mille per i suggerimenti

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    158
    ho provato a lanciare l'installazione con exec() , ma ho riscontrato il seguente problema :

    Error on exec() method
    java.io.IOException: Cannot run program "/home/usr/Scrivania/jdk-6u21-linux-i586.bin": java.io.IOException: error=13, Permission denied

    anke se windows 7 ho avuto problemi simili ( privilegi elevati )

    come posso risolvere ?
    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    158
    Error on exec() method
    java.io.IOException: Cannot run program "/home/usr/Scrivania/jdk-6u21-linux-i586.bin": java.io.IOException: error=13, Permission denied

    in parte ho risolto.... ho cambiato i permessi del file chmod 777 nomeFile , così nn ha lanciato nessuna eccezione , però nn ho capito se l'installazione parte o meno....

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    158
    ho preferito nn aprire un altro post poikè il problema è sempre legato all'exec().....

    in particolare con ho dei problemi con Windows7 , provando ad effettuare un exec ho riscontrato il seguente problema :

    CreateProcess error=740, Per eseguire l'operazione richiesta è necessaria l'esecuzione con privilegi elevati

    con XP è andato tutto liscio , il problema è con 7 e con vista devo ancora verificare...

    Grazie per la disponibilità

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.