在运行时运行编译的Java代码

古尔坎·恰塔克

我想运行之前编译的代码。无论如何,我都进行了编译,如何编译并不重要,但是运行代码是有问题的。

我的 code.java

public class code{

    public static void main(String[] args) {
        System.out.println("Hello, World");
    }
}

然后,我编译了这段代码,并生成了code.class(在D://目录中)。现在,我要运行此编译文件。我的代码是:

import java.io.IOException;
import java.io.InputStream;

public class compiler {
   public static void main(String[] args) {
      final String dosCommand = "cmd /c java code";
      final String location = "D:\\";
      try {
         final Process process = Runtime.getRuntime().exec(
            dosCommand + " " + location);
         final InputStream in = process.getInputStream();
         int ch;
         while((ch = in.read()) != -1) {
            System.out.print((char)ch);
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

此处没有错误,但是此代码不执行任何操作。没有打开cmd,什么也没有。我哪里错了?我该怎么办?

Madhawa Priyashantha

当前您的cmd命令是错误的。

cmd /c java code D:/   /*this is not correct cmd command*/

它应该是

cmd /c java -cp D:/ code

当您在其他文件夹中但不在当前文件夹中运行.class文件时,-cp用于指定类路径

there is no error 不,实际上没有。但是您没有捕获它们。要捕获错误,您可以使用 getErrorStream()

示例代码

public class compiler {

    public static void main(String[] args) {
        final String dosCommand = "cmd /c java -cp ";
        final String classname = "code";
        final String location = "D:\\";
        try {
            final Process process = Runtime.getRuntime().exec(dosCommand + location + " " + classname);
            final InputStream in = process.getInputStream();
            final InputStream in2 = process.getErrorStream();
            int ch, ch2;
            while ((ch = in.read()) != -1) {
                System.out.print((char) ch);
            }
            while ((ch2 = in2.read()) != -1) {
                System.out.print((char) ch2); // read error here
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章