я нужна программа Java в Java, которая компилирует другие программы Java с помощью CMD командыкоманды CMD использование в Java программы
ответ
Runtime.exec(-whatever cmd command you need to execute-)
http://download.oracle.com/javase/6/docs/api/java/lang/Runtime.html
Винод.
Для JDK 1.5 и выше вы можете использовать 'ProcessBuilder' (http://download.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder .html) –
oh ok .. спасибо .. :) – Rajan
спасибо за ссылку – user496789
Может быть, вы ищете Java Runtime.exec() функции:
exec
public Process exec(String command)
throws IOException
Выполняет указанную команду строку в отдельном процессе. Это метод удобства . При вызове форма exec (команда) ведет себя в точно так же, как вызов exec (команда, null, null).
может дать мне пример программы – user496789
с помощью ЦМД можно сделать так:
String cmd = "c:\\Programme\\Ghostgum\\gsview\\gsprint.exe"; //what to execute
String prt = "-printer XYZ"; // additional parameters
String dat = "\"" + pfad + "\""; // the file to be passed
ProcessBuilder pb = new ProcessBuilder(cmd, prt, dat);
System.out.println(cmd + " " + prt + " " + dat);
pb.redirectErrorStream(true);
Process ps = pb.start();
ps.waitFor();
Примечание 1: не работает 'cmd.exe', переменная' shell' вообще не используется. 2: 'gsprint.exe' не является командой cmd. 3: нет причин называть 'redirectErrorStream', если вы не читаете стандартный вывод (в любом случае, не так). –
Для выполнения реальныхcmd
команды, необходимые для запуска cmd.exe
с опцией /c
использованием Runtime.exec
или ProcessBuilder
как
String cmd = "dir > t.txt";
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", cmd);
Process process = builder.start();
process.waitFor();
System.out.println("done");
Чтобы начать исполняемый файл, как calc.exe
вы можете запустить его непосредственно
ProcessBuilder builder = new ProcessBuilder("calc.exe");
Process process = builder.start();
process.waitFor();
System.out.println("done");
обоих образцов кода недостающих IO и обработки исключений ...
Очень чистый и понятный ответ. – brimborium
Дополнительное примечание:
При использовании JDK1.6 теперь вы можете программно скомпилировать из другой java-программы, используя JavaCompiler. Вы можете вызвать свою программу компилятора из командной строки, если это то, чего вы пытаетесь достичь.
Я наконец получил свой ответ. Он фактически компилирует Java-программу. Программа выглядит следующим образом:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Dos {
public static void main(String[] args) {
try {
String[] command = new String[4];
command[0] = "cmd";
command[1] = "/C";
command[2] = "C:/Program Files/Java/jdk1.6.0_21/bin/javac";//path of the compiler
command[3] = "d:\\a.java";
Process p = Runtime.getRuntime().exec(command);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
// read the output from the command
String s = null;
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
System.out.println("I am In try");
}
catch (Exception e) {
System.out.println("I am In catch");
}
}
}
Как компилятор, я бы отказался компилировать этот беспорядок. Пожалуйста, используйте правильное форматирование кода (желательно [Соглашения Java Code] (http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html)). : D – brimborium
Не уверен, почему вы хотите явно вызвать оболочку для компиляции программ на Java. если вы абсолютно уверены, что это то, что вам нужно сделать, а затем пойти на это и следовать рекомендациям других. Однако, если все, что вы хотите сделать, это компиляция кода из программы Java, вы можете сделать это с Java 6.0 (и выше):
http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html
Может быть, вы должны просто использовать муравей (см HTTP://ant.apache.org/) :-) – Grodriguez