当前位置:编程学习 > JAVA >>

Java编写的文本编辑器,怎么实现编译功能

用Java编写了一个文本编辑器,要能够编译运行Java程序,求帮助! --------------------编程问答-------------------- 不明白楼主的意思 --------------------编程问答-------------------- 利用ant,点击编译的时候生成相应的build.xml同时启动ant编译吧。这样简单些吧 --------------------编程问答-------------------- 把下面的重启命令换成Java的编译命令即可

Java: 利用ProcessBuilder实现JAVA程序的重启
在程序运行的过程中,我们可能需要更改一些配置,如果配置更改得很大的话,就可能会需要程序重新启动,但是JAVA并没有提供给我们直接的可以重启的方法.在这里我们将利用JDK1.5新增的ProcessBuilder来创建一个重启进程,然后自己的进程退出.

简单 代码如下:
/*
 * Test3.java
 * 
 * Created on 2007-9-27, 11:46:31
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package test2;

import java.io.File;
import java.io.IOException;
import java.util.Map;

/**
 *
 * @author hadeslee
 */
public class Test3 {
    public static void restart() throws IOException{
        //用一条指定的命令去构造一个进程生成器
        ProcessBuilder pb=new ProcessBuilder("java","-jar","Test3.jar");
        //让这个进程的工作区空间改为F:\dist
        //这样的话,它就会去F:\dist目录下找Test.jar这个文件
        pb.directory(new File("F:\\dist"));
        //得到进程生成器的环境 变量,这个变量我们可以改,
        //改了以后也会反应到新起的进程里面去
        Map<String,String> map=pb.environment();
        Process p=pb.start();
        //然后就可以对p做自己想做的事情了
        //自己这个时候就可以退出了
        System.exit(0);
    }
}

在这里我们利用了ProcessBuilder这个类,这个类是一个进程的生成类,我们在起动一个进程之前可以设置好相关的一些参数,比如工作目录,环境变量等等,但是设置环境变的时候,有一个需要注意的地方就是你设置的环境变量不会改变系统原来的环境变量.也就是说即使你把path设为空,这个进程的运行的时候,依然是读取系统的path找到java这个命令,否则的话,你把path设为空,java命令是不可能找得到的.
一般来说ProcessBuilder这个类都是在万不得已的情况下才用的,因为用了它以后,程序很难保证可移植性,除非你在每个平台上都找到相应的命令执行相应的事情. 

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class ProcessBuilderTest {
    public static void main(String[] args) throws IOException {
        ProcessBuilder pb = new ProcessBuilder("java", "Test2");
        pb.directory(new File("/Users/Biao/Desktop/"));
        Process p = pb.start();
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println("End");
    }
}

From: http://www.blogjava.net/hadeslee/archive/2007/09/27/148616.html
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,