📄 javaexecutor.java
字号:
/*
* Created on 2004-5-27
*/
package yuchifang.javaIDE.executors;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import javax.swing.JOptionPane;
import yuchifang.javaIDE.interfaces.IExecCaller;
import yuchifang.javaIDE.interfaces.IExecutor;
/**
* @author yuchifang
*/
public class JavaExecutor extends Thread implements IExecutor
{
private String exePath;
private String filePath;
private IExecCaller ec;
private JavaExecutor() { }
public JavaExecutor(String path)
{
exePath = path;
}
public void setExePath(String path)
{
exePath = path;
}
private String getExePath()
{
return exePath;
}
public void run()
{
ec.print("\r\n------------------开始执行[" + new Date() + "]------------------\r\n");
long interval = System.currentTimeMillis();
if (exePath == null)
{
int choice = JOptionPane.showConfirmDialog(
null,
"JDK配置出错\r\n请先配置JDK!",
"JDK未配置",
JOptionPane.OK_OPTION); //##用null合适吗?
return;
}
String className = new File(filePath).getName();
if (className.endsWith(".java"))
{
className = className.substring(0, className.length() - ".java".length());
}
String[] args =
{
getExePath(),
className
};
ProcessBuilder pb = new ProcessBuilder(args);
pb.directory(new File(new File(filePath).getParent())); //有效吗?
Process p=null;
try
{
p = pb.start();
} catch (IOException e)
{
e.printStackTrace();
return;
}
ec.setOutput(p.getOutputStream());
ec.printResults(p.getInputStream());
ec.printResults(p.getErrorStream());
interval = System.currentTimeMillis() - interval;
ec.print("\r\n------------------执行结束[" + new Date() + "],耗时[" + interval / 1000.0 + "]秒------------------\r\n");
}
public void execute(String filePath, IExecCaller ec)
{
this.filePath = filePath;
this.ec = ec;
start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -