【问题标题】:Running java programs inside a java program在 java 程序中运行 java 程序
【发布时间】:2015-05-31 09:10:59
【问题描述】:

大家好,我想在我的 javaprogram 中运行 java 程序。

但是,当我尝试执行 java 命令时,它告诉我:

java c:\works\Sample stderr: 错误: 无法找到或加载主类 c:\works\Sample

这是我的代码:

private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
        Processor p = new Processor();
        try {
            int k = p.runProcess("javac c:\\works\\Sample.java");
            if (k == 0) {       
                k = p.runProcess("java c:\\works\\Sample");
            }

            System.out.println("Value of k: " + k);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }      

这是我的处理器类

public class Processor {

public void printLines(String name, InputStream ins) throws Exception {
    String line = null;
    BufferedReader in = new BufferedReader(
            new InputStreamReader(ins));
    while ((line = in.readLine()) != null) {
        System.out.println(name + " " + line);
    }
}

public int runProcess(String command) throws Exception {


    Process pro = Runtime.getRuntime().exec(command);
    printLines(command + " stdout:", pro.getInputStream());
    printLines(command + " stderr:", pro.getErrorStream());
    pro.waitFor();
    // System.out.println(command + " exitValue() " + pro.exitValue());
    return pro.exitValue();
}

}

我的文件在“C:\works\”下

您的回复将不胜感激!

【问题讨论】:

  • javajavac 不同。基本区别之一是它期望full.package.name.of.YourClass,而不是c:/location/of/YourClass。它还期望在您要运行的类的包的类补丁参数位置中。
  • 如果我没有包裹怎么办?
  • works 文件夹下是 .class 文件和 .java 文件。那里只有两个文件。
  • 使用java -cp locationODirectoryHoldingfYourClassWithoutPackage YourClass
  • ^成功了!但它只写在我的控制台上。如果我希望它出现在 CMD 本身上怎么办?

标签: java


【解决方案1】:

您可以通过拥有一个从 CMD 运行的主程序来执行此操作,该程序运行您想要的任何进程,并将这些进程的输入/输出重定向到它自己的输入/输出,这恰好是您的 CMD 输入/输出。 这里很好example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-07
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2016-05-19
    相关资源
    最近更新 更多