0

現在、Java で .java ファイルを作成しようとしています。サブクラス Eval を呼び出すいくつかのクラス Driver があります。

public class Driver
{
    public static void main(String[] args)
    {
        Eval eval = new Eval();
        eval.evaluate("System.out.println(\"Hello!!! I'm an auto-generated .java file!);\");
    }
}

これが私の Eval クラスです(同じプロジェクトに保存されています):

public class Eval
{
    public Eval()
    {

    }

    public void evaluate(String toEval)
    {
        PrintWriter writer = new PrintWriter("Auto.java", "UTF-8");
        writer.println("public class Auto");
        writer.println("{");
        writer.println("    public static void main(String[] args)");
        writer.println("    {");
        writer.println("        " + toEval;
        writer.println("    }");
        writer.println("}");
        writer.close();
    }
}

そこで、同じディレクトリにクラス Auto.java を手動で作成します。スクリプトを実行し、Auto.java を確認しましたが、驚いたことに、何も書き込まれていません。

public Auto
{
}

(これは、手動で作成した後に残した方法です)
何か提案をいただければ幸いです。
ありがとう!

PSさらに(上記のバグはこの質問よりも優先されますが)、どうすればこのプログラムをクラス Eval から実行できますか?

4

3 に答える 3

1

あなたはおそらく正しい場所を見ていません。コードはAuto.java現在のディレクトリのファイルに書き込みます。現在のディレクトリは、java コマンドが実行されるディレクトリです。

> pwd
> /foo/bar/baz
>
> java com.mycompany.Driver

上記の例では、ファイルは に書き込まれ/foo/bar/baz/Auto.javaます。

IDE から実行している場合は、IDE の「実行構成」によって現在のディレクトリが通知 (および変更) されます。通常、デフォルトで IDE によってプロジェクトのルートに設定されます。

于 2014-10-24T16:18:30.913 に答える
0

例外処理を追加する必要があります。

import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;

public class Driver
{
    public static void main(String[] args) throws FileNotFoundException,  UnsupportedEncodingException
    {
        Eval eval = new Eval();
        eval.evaluate("System.out.println(\"Hello!!! I'm an auto-generated .java file!);\");");

       //here we create an instance of the class (which will be created with code above) Auto
       Auto auto = new Auto();
    }
}

次に、メイン クラスに例外処理を追加する必要もあります。

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
public class Eval
{
    public void evaluate(String toEval) throws FileNotFoundException, UnsupportedEncodingException
    {
        PrintWriter writer = new PrintWriter("Auto.java", "UTF-8");
        writer.println("public class Auto");
        writer.println("{");
        writer.println("    Auto(){"); //You don't need another public static... just a constructor that prints the message
        writer.println("        " + toEval);
        writer.println("    }");
        writer.println("}");
        writer.close();
    }
}

上記でこれをテストしたところ、動作するので、正しいディレクトリを探していることを確認し、ファイル Auto が正しい場所にあることを確認してください (パスを指定する必要がある場合があります)。

PrintWriter writer = new PrintWriter("C:/Users/You/Desktop/..../test.txt", "UTF-8");

于 2014-10-24T16:31:43.393 に答える