Ik wil graag vanuit java at runtime een executable aanroepen, daarvoor heb ik de volgende code geschreven:
Wanneer ik deze code aanroep als volgt:
Dan krijg ik keurig netjes de output te zien, echter wil ik graag de output voor 'java -version'. Helaas lukt het me niet om dit voor elkaar te krijgen, simpelweg '-version' aan de lijst command toevoegen werkt niet. Tevens werkt het niet om de listitem 'java' te vervangen door 'java -version' of bijv. '\"java -version\"'.
Ik heb al een hoop gezocht op het internet, zonder resultaat, vandaar dat ik hier jullie hulp vraag.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| public static String execute(String directory, List<String> cmd) { StringBuilder output = new StringBuilder(); try { ProcessBuilder builder = new ProcessBuilder(cmd); Map<String, String> environ = builder.environment(); builder.directory(new File(directory)); final Process p = builder.start(); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = input.readLine()) != null) { output.append(line+"\n"); } input.close(); } catch (IOException e) { e.printStackTrace(); } return output.toString(); } |
Wanneer ik deze code aanroep als volgt:
Java:
1
2
3
4
5
6
| List<String> command = new ArrayList<String>(); command.add("cmd"); command.add("/c"); command.add("java"); String result = execute("C:\\",command); System.out.print(result); |
Dan krijg ik keurig netjes de output te zien, echter wil ik graag de output voor 'java -version'. Helaas lukt het me niet om dit voor elkaar te krijgen, simpelweg '-version' aan de lijst command toevoegen werkt niet. Tevens werkt het niet om de listitem 'java' te vervangen door 'java -version' of bijv. '\"java -version\"'.
Ik heb al een hoop gezocht op het internet, zonder resultaat, vandaar dat ik hier jullie hulp vraag.