0

try.java と another.java の 2 つのプロジェクトがあります。try.java から別の java を実行したい

ここにanother.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 が作成されました

誰でも私を助けることができますか?

4

3 に答える 3

0

Another.javaコードを実行しているディレクトリにないようです。特に、 との両方を呼び出すことでき、指定した引数を両方とも受け取っているように見えますが、 が見つかりません。javacjavaAnother.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");

ソースは、パッケージ構造と一致するようにフォルダー構造に編成しておく必要があることに注意してくださいanotherpkgtry

于 2013-05-03T05:56:15.750 に答える
0

Java コンパイラは、パッケージ内の Another.java ファイルを見つけようとしていますpkgtry。両方のファイルを 1 つのパッケージに入れると、目的の結果を得ることができます。

public static void main(String[] args) 
{
   try 
   {
     runProcess("javac Another.java");
     runProcess("java Another");
   }
   catch (Exception e) 
   {
     e.printStackTrace();
   }
}
于 2013-05-03T05:57:22.387 に答える
0

このようにするのはどうですか:

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

そのように機能する可能性はありますか?

于 2013-05-05T11:44:15.423 に答える