|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2011
Messaggi: 6
|
java-batch interruzione dell'esecuzione
Salve a tutti!
premetto non ho mai scritto un file batch! però adesso ne ho la necessità!! =) Ho scritto un batch che mi attiva l'esecuzione di un eseguibile jar che non è altro che un server. Codice:
@echo off cd example java -jar start.jar EXIT Codice:
processo = Runtime.getRuntime().exec("attivaServer.bat");
Codice:
processo.destroy(); Qualcuno sa aiutarmi? grazie!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Apparentemente Process non funziona tanto bene quando si passa per una shell.
Secondo le voci che circolano, dovrebbe invece funzionare se no passi per il file bat ma esegui direttamente java.exe. A naso dovrebbe essere una cosa di questo genere: Codice:
ProcessBuilder pb = new ProcessBuilder(
"percorso eseguibile java completo",
"-jar"
"start.jar");
pb.directory(new File("percorso della cartella di esecuzione"));
Process p = pb.start();
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: May 2011
Messaggi: 6
|
Grazie per aver risposto!
Ho provato a fare quello che mi hai consigliato te, nel dettaglio ho scritto: Codice:
ProcessBuilder pb = new ProcessBuilder(
"C:\\Users\\io\\Documents\\NetBeansProjects\\progetto\\example",
"-jar",
"start.jar");
pb.directory(new File("C:\\Users\\io\\Documents\\NetBeansProjects\\progetto\\example\\start.jar"));
processo = pb.start();
Codice:
11-mag-2011 12.58.07 MotoreDiRicerca.ServerSolr attiva
GRAVE: null
java.io.IOException: Cannot run program "C:\Users\io\Documents\NetBeansProjects\progetto\example" (in directory "C:\Users\io\Documents\NetBeansProjects\progetto\example\start.jar"): CreateProcess error=267, Nome di directory non valido
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at MotoreDiRicerca.ServerSolr.attiva(ServerSolr.java:39)
at Interfaccia.Home.attivaServer(Home.java:240)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.trolltech.qt.internal.QSignalEmitterInternal$AbstractSignalInternal.emit_helper(QSignalEmitterInternal.java:368)
at com.trolltech.qt.QSignalEmitter$Signal1.emit(QSignalEmitter.java:209)
at com.trolltech.qt.gui.QApplication.exec(Native Method)
at Interfaccia.Home.main(Home.java:43)
Caused by: java.io.IOException: CreateProcess error=267, Nome di directory non valido
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 10 more
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La prima stringa è il percorso dell'eseguibile java, nel senso di "java.exe".
ProcessBuilder funziona un po' come la linea nel batch, là scrivi: java -jar start.jar Nel costruttore del process builder scrivi la stessa cosa solo che usi una stringa per ogni pezzo. Diventa: ... new ProcessBuilder("java", "-jar", "start.jar"); Con l'inghippo di dover usare i percorsi assoluti perchè non è detto che "java" sia nel path del programma di partenza, quindi dovrai dire, nel caso di windows e ad esempio: Codice:
...new ProcessBuilder(
"c:\\users\\pgi\\jre\\bin\\java.exe",
"-jar",
"c:\\users\\pgi\\progetti\\server\\start.jar");
Codice:
ProcessBuilder pb = new ProcessBuilder(
"c:\\users\\pgi\\jre\\bin\\java.exe",
"-jar",
"start.jar");
pb.directory(new File("c:\\users\\pgi\\progetti\\server"));
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:16.



















