本帖最后由 feidewu 于 2012-11-17 11:36:26 编辑

解决方案 »

  1.   

    string没有被初始化,直接调用:string+=str,不报空指针?
      

  2.   

    我把str初始化null后,还是没办法出现出错信息,string还是null
      

  3.   

    使用StringBuilder
    StringBuilder builder = new StringBuilder(1024);
    循环里
    builder.append(str);
      

  4.   

    java创建子进程执行并获取其标准输出流,用Runtime类来搞功能还是太弱了,建议你还是用native方法实现,暴露JNI接口给java调用,就是会变的不跨平台了
      

  5.   

    从java6开始提供了javax.tools.JavaCompiler,为什么还使用Runtime调用javac
      

  6.   

    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    int result = compiler.run(null, null, null, filename);
    compiler.run这句根本不执行。为什么?我是从硬盘中打开某个java文件然后进行编译的
      

  7.   

    你都知道是出错了,还用getInputStream,你说能获得信息吗?
    请用getErrorStream
      

  8.   

    使用getErrorStream    
      

  9.   


    String str = "";
    String string = null;
    Runtime run = Runtime.getRuntime();
    errortextArea.setText(Name);
    Process process = null;
    try {
     process = run.exec("java "+Name);
     BufferedInputStream in = new BufferedInputStream(process.getErrorStream());
     BufferedReader reader = new BufferedReader(new InputStreamReader(in));
     errortextArea.setText(string);
     while((str = reader.readLine()) != null)
     {
     string  += str;
     string += "\n";
     }
     errortextArea.setText(string);
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }出来的结果是:找不到或无法加载主类 MyEditor2.java。为什么会这样呢?
      

  10.   

    我配置的环境都没有错啊,因为我在控制台下编译运行都没有任何问题,但是用eclipse运行之后
    得到的出错信息是:找不到或无法加载主类 MyEditor2.java。为什么?
      

  11.   

    上一个回复我没说清楚,在我的程序的界面中读进一个java文件后调用javac编译得到的编译结果是:找不到或无法加载主类 MyEditor2.java
      

  12.   

    因为你的路径不一样,
    给你举个例子,
    比如我现在的路径是
    eclispse
      ->bin
      ->src
          ->Compiler.java
          ->Target.java
    你使用的是Compiler来执行exec编译Target.java的话
    要这样写
    runtime.exec("javac src/Target.java");