加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:39:07 所属栏目:Java 来源:网络整理
导读:我想运行之前编译的代码.我编译无论如何编译并不重要,但运行代码是问题. 我的code.java public class code{ public static void main(String[] args) { System.out.println("Hello,World"); }} 然后我编译了这段代码并生成了code.class(在D://目录中).现在
我想运行之前编译的代码.我编译无论如何编译并不重要,但运行代码是问题.

我的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打开,没有.我哪里错了?我该怎么办?

解决方法

当前你的cmd命令是错误的.
cmd /c java code D:/   /*this is not correct cmd command*/

它应该是

cmd /c java -cp D:/ code

当您在另一个文件夹中运行.class文件但不在当前文件夹中时,请使用-cp指定类路径

实际上没有错误nope.但是你没有捕获它们.捕获错误你可以使用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();
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读