Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    Eseguire una classe da un'altra classe

    Ovviamente pare facilissimo... Java è basato su classi e oggetti...

    Il problema è che la classe che devo eseguire dal mio programma Java deve essere eseguita cone se la stessi chiamando da consolle, e quindi attraverso il metodo "main".

    Oltre questo, ho il problema che la mia classe è 'dispersa' in una sottocartella di un lungo percorso, e non è stata inserita in nessun Jar, quindi non riesco a farla proprio 'vedere' al mio programma.

    Ovviamente la classe che devo chiamare non può essere assolutamente toccata.

    (Inoltre c'è il problema che non posso importare la classe nel mio programma perché può ancora essere modificata).

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

    Re: Eseguire una classe da un'altra classe

    Originariamente inviato da Reiuky
    Oltre questo, ho il problema che la mia classe è 'dispersa' in una sottocartella di un lungo percorso, e non è stata inserita in nessun Jar, quindi non riesco a farla proprio 'vedere' al mio programma.
    Quindi non è in "classpath"? E c'è qualche motivo particolare/specifico per cui non puoi o non vuoi fare in modo che sia in classpath?

    Originariamente inviato da Reiuky
    Ovviamente la classe che devo chiamare non può essere assolutamente toccata.

    (Inoltre c'è il problema che non posso importare la classe nel mio programma perché può ancora essere modificata).
    Modificata in che senso??? Se non cambi package/nome della classe puoi certamente importarla (ammesso che sia in classpath).

    Insomma ... cosa deve "sapere" della classe il tuo programma che deve usarla?
    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 L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    Re: Re: Eseguire una classe da un'altra classe

    Originariamente inviato da andbin
    Quindi non è in "classpath"? E c'è qualche motivo particolare/specifico per cui non puoi o non vuoi fare in modo che sia in classpath?
    Veramente è in classpath. Ma non la vede ugualmente

    Modificata in che senso??? Se non cambi package/nome della classe puoi certamente importarla (ammesso che sia in classpath).
    Quello che pensavo anche io. Non ho capito molto questa storia...

  4. #4
    codice:
     Runtime rt = Runtime.getRuntime();
     Process ps = rt.exec("java NOMECLASSE  args");
     OutputStream os = ps.getOutputStream();
     InputStream is = ps.getInputStream();

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

    Re: Re: Re: Eseguire una classe da un'altra classe

    Originariamente inviato da Reiuky
    Veramente è in classpath. Ma non la vede ugualmente
    Bisognerebbe vedere a) Come hai specificato il classpath e b) Se tale classe è in un package, perché la cosa conta.
    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 L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    Re: Re: Re: Re: Eseguire una classe da un'altra classe

    Originariamente inviato da andbin
    Bisognerebbe vedere a) Come hai specificato il classpath e b) Se tale classe è in un package, perché la cosa conta.
    Non è in un package.

    Comunque, ora stò tentando la via del runtime.

  7. #7
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    Originariamente inviato da Romeo25
    codice:
     Runtime rt = Runtime.getRuntime();
     Process ps = rt.exec("java NOMECLASSE  args");
     OutputStream os = ps.getOutputStream();
     InputStream is = ps.getInputStream();
    Meglio, grazie.

    Ma ora...

    La classe chiamata non parte finché la classe chiamante non viene chiusa. C'è un modo per ovviare? A me servirebbe che la classe chiamante resti in attesa finchè la classe chiamata non termini il suo lavoro.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Reiuky
    A me servirebbe che la classe chiamante resti in attesa finchè la classe chiamata non termini il suo lavoro.
    waitFor() di Process.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    Utilizzando il waitFor() di process il programma si blocca e bisogna passare attraverso il task manager per chiuderlo (e, a quel punto, viene eseguita la classe chiamata)


    Ho anche provato a chiamare direttamente il metodo main della classe, ma, dato che essa non è in un package, non me la trova (anche se ho impostato le path)

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Reiuky
    Utilizzando il waitFor() di process il programma si blocca e bisogna passare attraverso il task manager per chiuderlo (e, a quel punto, viene eseguita la classe chiamata)
    Due domande giusto per capire lo scenario: la tua applicazione principale è "grafica" (usa Swing?) e hai fatto la exec in risposta ad un qualche evento (es. pressione pulsante o altro)?? L'applicazione che lanci fa dell'output su standard-output??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.