Java Programlama: Java'dan bir exe çağırın ve parametreleri geçirin


87

Java'dan bir exe çağırmak ve belirli parametreleri aktarmak için bir mekanizma buluyorum. Nasıl yapabilirim?

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ışıyor. Ama parametreleri içeri aktaramıyorum . MyExe.exe parametreleri kabul eder. Diğer bir sorun ise PathToExe'de boşluklar bulunmasıdır. ProcessBuilder çalışmıyor gibi görünüyor. Örneğin:

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

Teşekkür ederim.


1
yeni ProcessBuilder ("C: \\ PathToExe \\ MyExe.exe", "param1", "param2"). start ();
Prince John Wesley


1
new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();Bu pasaj, seçenek argümanları için değerli mi? Örneğin -h bu yardım anlamına gelir ve böyle devam eder ..
Lorenzo B

boşluklu yollar ne olacak? Tekrar teşekkürler. Çok yararlı!!
Lorenzo B

3
@Flex: Bir argüman bir argümandır. Anlam Tartışmanın tamamen yukarı programı varlık vadede etmektir. Bir program -hbir seçenek olarak yorumlanabilir, diğeri ise bir dosya adı olarak yorumlayabilir. ProcessBuilderne bilir ne de umursamaz. Boşluklu yeniden yollar: Bu, argümanların komut satırında ve bazı zayıf API'lerde olduğu gibi (diyelim ki) boşlukla sınırlandırılmış bir liste olarak değil, ayrı dizeler olarak verilmesinin nedenlerinden biridir. Terk ederek oraya boşluk bırakın, tüm program yolu uygun şekilde ele alınması için İşletim Sistemine verilecektir.
TJ Crowder

Yanıtlar:




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"); 
    }
}

1
Bağımsız değişkenler nereye koyulur?
Mert Serimer

1
@Shikha lütfen soruyu gözden geçirin
Anand j. Kadhi

0

Eğer exe'niz bir dll'ye veya belirli bir bağımlılığa bağlıysa, bu durumda dizin yolunu ayarlamanız gerekir. Aşağıda bahsedildiği gibi exePath, exe'nin referans dosyalarıyla birlikte yerleştirildiği klasör anlamına gelir.

Herhangi bir temporaray dosyası oluşturan Exe uygulaması, processBuilder.directory'de belirtilen klasörde (...)

**

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();
} 

**

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.