Così mi sono state combattendo questo problema per un po 'ora e provato molti modi diversi per risolvere il problema, ma non ci riesco. Bascally il livello qualitativo la mia applicazione non fa altro che richiama un file Java per caricare un'applicazione su un dispositivo. Mentre il suo carico la sua è la stampa a una casella RTF, quindi vorrei passare al file successivo. Il problema che sto avendo è che, mentre il primo file viene caricato, il 2 ° cerca di caricare quali casi problemi. Ho provato l'attesa per l'uscita, ma se lo faccio, poi i dati di uscita non ottiene scritta alla casella di testo ricco. Tutte le idee ho provato a mettere l'attesa per l'uscita in molti luoghi diversi, ma doesnt sembrano funzionare. Due metodi di sotto scrivere il stdout o errore al campo richtext. Qualunque idea sarebbe apprezzata. Bascally Ho bisogno il processo di uscire, così poi posso continuare pensato che il forloop per caricare il file successivo. Sei sempre qualsiasi tipo di messaggio di errore Mi sembra come i tuoi argomenti sono - Xmx512M - jar. manca uno spazio dopo l'opzione riga di comando - jar. Questo potrebbe essere la causa per uscire solo subito a causa di non essere in grado di capire il comando. Inoltre, come suggerito M. Babcock, spostare il metodo loaddPB fuori dal thread dell'interfaccia utente, e assicurarsi di avvolgere la parte di carico in un semaforo, in questo modo solo un singolo file viene caricato in un momento e l'interfaccia utente può continuare a fare quello di cui ha bisogno fare. ndash SPFiredrake 9 Febbraio 12 alle 15:29 Sappiate che questo è un po quothackishquot in quel you39re ancora bloccando il thread UI, ma you39re pompare manualmente gli eventi attraverso la coda di messaggi. Questa non è una pratica migliore, e la maggior parte degli sviluppatori vi consiglierà contro di essa. L'opzione migliore è quello di gettare il codice di caricamento in un thread separato. ndash SPFiredrake 9 febbraio 12 a 15: 54Class processo Il ProcessBuilder. start () e metodi Runtime. exec creare un processo nativo e restituire un'istanza di una sottoclasse di processo che può essere utilizzato per controllare il processo e ottenere informazioni su di esso. Il processo classe fornisce metodi per l'esecuzione di ingresso dal processo, eseguendo uscita al processo, in attesa del completamento del processo, il controllo dello stato di uscita del processo, e la distruzione (abbattimento) il processo. I metodi che creano processi potrebbero non funzionare bene per lavorazioni particolari su alcune piattaforme native, come ad esempio processi nativi a finestre, processi demoni, processi Win16DOS su Microsoft Windows, o script di shell. Per impostazione predefinita, il sottoprocesso creato non dispone di un proprio terminale o console. Tutte le sue operazioni standard IO (cioè stdin, stdout, stderr) saranno reindirizzati al processo padre, in cui si può accedere tramite i flussi ottenuti con il metodo getOutputStream (). getInputStream (). e getErrorStream (). Il processo genitore usa questi flussi per alimentare ingresso e ottenere in uscita dal sottoprocesso. Poiché alcune piattaforme native forniscono solo limitate dimensioni del buffer per i flussi di ingresso e di uscita standard, il fallimento di scrivere rapidamente il flusso di input o di leggere il flusso di uscita del sottoprocesso può causare il sottoprocesso per bloccare, o addirittura di stallo. Il sottoprocesso non viene ucciso quando non ci sono più riferimenti all'oggetto processo, ma piuttosto il sottoprocesso continua ad eseguire in modo asincrono. Non è richiesto che un processo rappresentato da un oggetto Process eseguire in modo asincrono o contemporaneamente rispetto al processo Java che possiede l'oggetto processo. A partire dal 1.5, ProcessBuilder. start () è il modo migliore per creare un processo. Constructor Summary Costruttore e Descrizione Metodo di Sintesi modificatore e Tipo Metodo e descrizione uccide il sottoprocesso. Restituisce il valore di uscita per il sottoprocesso. Restituisce il flusso di ingresso collegato all'uscita errori del sottoprocesso. Restituisce il flusso di ingresso collegato alla normale uscita del sottoprocesso. Restituisce il flusso di uscita collegata al normale ingresso del sottoprocesso. Causa il thread corrente di aspettare, se necessario, fino a quando il processo rappresentata dall'oggetto processo è terminato. Metodi ereditati dalla classe Object di costruzione dei metodi Particolare getOutputStream Restituisce il flusso di uscita collegata al normale ingresso del sottoprocesso. Uscita per il flusso è convogliato dentro lo standard input del processo rappresentato da questo oggetto di processo. Se lo standard input del sottoprocesso è stato reindirizzato utilizzando ProcessBuilder. redirectInput allora questo metodo restituirà un flusso di output nullo. Attuazione nota: E 'una buona idea per il flusso di output tornato a essere tamponata. Restituisce: il flusso di uscita collegata al normale ingresso del sottoprocesso getInputStream restituisce il flusso di ingresso collegato all'uscita normale della sottoprocesso. Il flusso ottiene i dati convogliata da standard output del processo rappresentato da questo oggetto di processo. Se l'uscita standard del sottoprocesso è stato reindirizzato utilizzando ProcessBuilder. redirectOutput allora questo metodo restituirà un flusso di input nullo. In caso contrario, se l'errore standard della sottoprocesso è stato reindirizzato utilizzando ProcessBuilder. redirectErrorStream quindi il flusso di input restituito da questo metodo riceverà la fusione standard output e l'errore standard della sottoprocesso. Attuazione nota: E 'una buona idea per il flusso di input tornato a essere tamponata. Restituisce: il flusso di ingresso collegato alla normale uscita del sottoprocesso getErrorStream Restituisce il flusso di ingresso collegato all'uscita errori del sottoprocesso. Il flusso ottiene i dati convogliata da l'output di errore del processo rappresentato da questo oggetto di processo. Attuazione nota: E 'una buona idea per il flusso di input tornato a essere tamponata. Restituisce: il flusso di ingresso collegato all'uscita di errore della sottoprocesso provoca il thread corrente di aspettare, se necessario, fino a quando il processo rappresentata dall'oggetto processo è terminato. Questo metodo restituisce immediatamente se il sottoprocesso è già terminato. Se il sottoprocesso non è ancora terminato, il thread chiamante sarà bloccato fino a quando le uscite di processo parziali. Restituisce: il valore di uscita del sottoprocesso rappresentato da questo oggetto di processo. Per convenzione, il valore 0 indica la terminazione normale. Produce: InterruptedException - se il thread corrente viene interrotto da un altro thread mentre è in attesa, quindi l'attesa è finita e un InterruptedException è gettato. Restituisce il valore di uscita per il sottoprocesso. Restituisce: il valore di uscita del sottoprocesso rappresentato da questo oggetto di processo. Per convenzione, il valore 0 indica la terminazione normale. Produce: IllegalThreadStateException - se il sottoprocesso rappresentato da questo oggetto processo non è ancora terminato Uccide il sottoprocesso. Il sottoprocesso rappresentato da questo oggetto di processo viene forzatamente interrotta. Invia un bug o funzionalità per ulteriore riferimento API e documentazione per gli sviluppatori, vedere Java SE documentazione. Tale documentazione contiene, descrizioni più dettagliate degli sviluppatori mirati, con panoramiche concettuali, le definizioni dei termini, soluzioni alternative e esempi di codice di lavoro. Copyright x00a9 1993 2016, Oracle Andor i suoi affiliati. Tutti i diritti riservati. L'uso è soggetto ai termini della licenza. Vedere anche la politica di ridistribuzione della documentazione . Scripting in questa pagina tiene traccia del traffico pagina web, ma non cambia il contenuto in alcun modo.
No comments:
Post a Comment