Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    problemino con Runtime.exec() su Linux

    Durante un mio programma java alla ricezione di un file .class devo lanciarlo.

    Ho usato recvdir per indicare la cartella nella quale ricevo il file, e myname è il nome del file privato dell'estensione .class. Al momento di eseguire questa parte di codice però su linux (il codice per Windows sta in un'altra parte di codice) mi lancia l'eccezione class not found.

    codice:
    Runtime rt = Runtime.getRuntime();
    String esegui="java -cp " + recvdir + " " + myname;
    Process p = rt.exec(esegui);

    La mia idea sarebbe quella di eseguire
    codice:
    rt.exec("java -cp /home/.../cartella nomefile");
    E' errata l'impostazione oppure magari va in errore per qualche stupidaggine come uno slash o qualcos'altro?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Può andare in errore per entrambe le cose:

    1) Il nome della classe non deve contenere l'indicazione dell'estensione .class

    2) Per eseguire una classe java essa deve essere invocata nel modo e dalla posizione corretta: se essa fa parte di un package, il nome del package va qualificato correttamente, altrimenti ti devi prima posizionare nella directory che contiene il .class, quindi eseguirlo senza l'indicazione di alcun percorso. Se indichi un percorso, la JVM se lo aspetta come qualificatore di package (quindi con i punti al posto degli slash).

    Per prima cosa, quindi, controlla che il nome della classe sia privo di estensione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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

    Re: problemino con Runtime.exec() su Linux

    Originariamente inviato da Luca Petralia
    mi lancia l'eccezione class not found.

    codice:
    rt.exec("java -cp /home/.../cartella nomefile");
    Beh, bisogna vedere. Da questo non si può capire molto. Che tu metta una certa cartella in "classpath" va bene. Quel "nomefile" non deve essere un nome di file ma il nome di una classe (completo di package se ci sono).

    Hai provato a lanciare a mano da shell il comando effettivo che dovresti usare? Puoi fare un esempio di questo comando?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    esatto, ho provato a lanciare da shell il comando che penso di eseguire con l'exec()...e mi funziona

    l'esempio è...apro una shell in /home/luca/ per farti un esempio e digito

    codice:
    Java -cp /home/luca/Desktop/Files/ Main
    Facendo così mi funziona...ed è quello che cerco di riproporre nel mio codice. Solo che non funziona.

    Per rispondere a LeleFT ho un codice che mi elimina l'estensione del file, quindi il .class, mentre la classe è una semplicissima Helloworld che in più genera un file

    niente package

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Luca Petralia
    l'esempio è...apro una shell in /home/luca/ per farti un esempio e digito

    codice:
    Java -cp /home/luca/Desktop/Files/ Main
    Facendo così mi funziona...
    Ok, perfetto.

    Originariamente inviato da Luca Petralia
    ed è quello che cerco di riproporre nel mio codice. Solo che non funziona.
    Mi sembra strano .....

    Quindi se fai:
    .....
    rt.exec ("java -cp /home/luca/Desktop/Files/ Main");

    non ti funziona?? Hai provato proprio così?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    adesso provo, solo che ho dovuto reinstallare linux.

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.