Вы можете написать собственную программу на Java, которая
- Позволяет разработчику выбирать файл для компиляции и запуска.
- Извлекает системный компилятор и компилирует файл.
- Запускает скомпилированную программу на Java.
Эй, я только что написал ее для вас.Это было очень весело писать.Прошу прощения за отсутствие модульности, я просто взломал его за 15 минут.Конечно, вам придется скомпилировать и упаковать нижеприведенную Java-программу в файл .jar, который затем можно будет дважды щелкнуть по нему для запуска.
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
public class Launcher {
public static void main(String[] args) {
try {
// Let the programmer choose the Java file to be compiled and executed.
JFileChooser chooser = new JFileChooser();
int response = chooser.showOpenDialog(null);
if (response == JFileChooser.APPROVE_OPTION) {
File javaFile = chooser.getSelectedFile();
// Compile the Java file.
InputStream in = new FileInputStream(javaFile);
OutputStream out = new ByteArrayOutputStream(16);
OutputStream err = new ByteArrayOutputStream(2000);
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
String[] compileArgs = { javaFile.getAbsolutePath() };
int r = compiler.run(in, out, err, compileArgs);
if (r != 0) {
JOptionPane.showMessageDialog(null, err.toString(), "CompileError", JOptionPane.ERROR_MESSAGE);
}
else {
// Since the file compiled successfully, run the compiled class.
String filename = javaFile.getName();
int dot = filename.lastIndexOf('.');
String className = filename.substring(0, dot);
String[] command = {
"javaw",
className,
};
ProcessBuilder pb = new ProcessBuilder(command);
pb.directory(javaFile.getParentFile());
pb.start();
}
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.toString(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
}