无法从另一个运行java项目

时间:2013-05-03 05:48:33

标签: java netbeans-7

我有两个projects-try.java和另一个.java。我想从try.java

运行另一个java

这是我的另一个代码.java

package another;

public class Another {

    public static void main(String[] args) 
    {
        System.out.println("Another Java Project");
    }
}

这是try.java的mycode

package pkgtry;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Try 
{
    private static 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);
    }
}

private static void 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());
}

public static void main(String[] args) 
{
    try 
    {
        runProcess("javac C:\\Users\\owner\\Documents\\NetBeansProjects\\try\\src\\pkgtry\\Another.java");
  runProcess("java C:\\Users\\owner\\Documents\\NetBeansProjects\\try\\src\\pkgtry\\Another");
    }
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}
}

运行Try.java后它没有打印任何东西。它刚刚在netbeans中成功打印。但是已经创建了一个类Another.cass

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

看起来Another.java不在您运行代码的目录中。特别是, 管理同时调用javacjava,看起来两者都在接收您指定的参数 - 但它找不到{{ 1}}。

此外,您需要向Another.java提供完全限定的类名,在这种情况下,java包含another.Another。这也意味着您需要以一种将类文件保留在适当的目录结构中的方式进行编译。

所以你想要这样的东西:

another

(其中runProcess("javac -d . path/to/Another.java"); runProcess("java another.Another"); 是绝对文件名或相对于工作目录的文件名。)

path/to/Another.java将告诉-d .构建一个以输出文件当前工作目录为根的目录结构。

编辑:现在我们知道你在哪里运行,你可以使用:

javac

请注意, 应将源保存在文件夹结构中以匹配包结构,因此它应位于名为runProcess("javac -d . src/pkgtry/Another.java"); runProcess("java another.Another"); 的目录中,而不是another

答案 1 :(得分:0)

java编译器正在尝试在包pkgtry中找到Another.java文件。如果您将两个文件放在一个包中,那么您将能够获得所需的结果。

public static void main(String[] args) 
{
   try 
   {
     runProcess("javac Another.java");
     runProcess("java Another");
   }
   catch (Exception e) 
   {
     e.printStackTrace();
   }
}

答案 2 :(得分:0)

这样做:

try 
    {
    runProcess("cd C:\\Users\\owner\\Documents\\NetBeansProjects\\try\\src\\pkgtry);
    runProcess("javac Another.java");
    runProcess("java Another");
    }

它有可能以这种方式运作吗?