⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javaexecutor.java

📁 用java编写的IDE程序示例
💻 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 + -