2011-04-09 13 views
70

Java'dan bir exe çağırmak ve belirli parametrelerden geçmek için bir mekanizma kuruyorum. Nasıl yapabilirim?Java Programlama: Java'dan bir exe çağırma ve parametreleri aktarma

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe").start(); 
InputStream is = process.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 
String line; 

System.out.printf("Output of running %s is:", Arrays.toString(args)); 

while ((line = br.readLine()) != null) { 
    System.out.println(line); 
} 

Önceki kod çalışır. Ama parametreleri içinden geçiremiyorum. MyExe.exe parametreleri kabul eder. Başka bir sorun, PathToExe'nin boş alanlara sahip olmasıdır. ProcessBuilder çalışmıyor görünüyor. Örneğin:

C:\\User\\My applications\\MyExe.exe 

Teşekkür ederiz.

+1

yeni ProcessBuilder ("C: \\ PathToExe \\ MYEXE.EXE", "param1", "param2") start().; –

+1

http://download.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html –

+0

'new ProcessBuilder (" C: \\ PathToExe \\ MyExe.exe "," param1 "," param2 ") .start();' Bu kod parçacığı seçenek argümanları için değerli mi? Örneğin -h bu yardım için duruyor ve .. –

cevap

97

Bağımsız değişkenlerinizi yapıcının kendisinde iletin. exe Eğer dizin yolunu ayarlamak gereken bazı dll veya sonra belirli bağımlılık bağlıdır eğer

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start(); 
+0

Bu doğru .. .exe kullanıyorum bunu kullanarak. – AutoMEta

+0

Yürütülebilir dosya içinde yürütülebilir dosya varsa ne olur? –

+0

@Guys. lütfen http://stackoverflow.com/questions/43050217/how-to-invoke-java-through-processbuilder?noredirect=1#comment73185557_43050217 – gstackoverflow

0
import java.io.IOException; 
import java.lang.ProcessBuilder; 

public class handlingexe { 
    public static void main(String[] args) throws IOException { 
     ProcessBuilder p = new ProcessBuilder(); 
     System.out.println("Started EXE"); 
     p.command("C:\\Users\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"); 

     p.start(); 
     System.out.println("Started EXE"); 
    } 
} 
+0

sorunun çözülmesine yardımcı olun. –

+0

Daha net olabilir misiniz? –

0

Aşağıda benim için çalışıyor. Aşağıda, exePath, exe dosyasının referans dosyaları ile birlikte yerleştirildiği ortalama klasörü belirtilmektedir.

Exe uygulama o processBuilder.directory klasör bahsedildiğinde yaratacak yüzden herhangi temporaray dosyası oluşturma (...)

**

ProcessBuilder processBuilder = new ProcessBuilder(arguments); 
processBuilder.redirectOutput(Redirect.PIPE); 
processBuilder.directory(new File(exePath)); 
process = processBuilder.start(); 
int waitFlag = process.waitFor();// Wait to finish application execution. 
if (waitFlag == 0) { 
... 
int returnVal = process.exitValue(); 
} 

**

İlgili konular