2

そのため、javax.tools.JavaCompiler の API と cmd ライン コンパイラ (どちらも同じことです!) の間で厄介な小さな問題に遭遇しました。*-d C:\compiled\ C:\programs\HelloWorld.java *のように javac に引数を使用したいだけです。これは cmd プロンプトでうまく機能しますが、私のコードはファイルが存在しないと言って失敗しています。

public class Test {

    private static String programsDir = "C:\\programs\\";
    private static String compiledDir = "C:\\compiled\\";
    private static String fileName = "HelloWorld.java";

    public static void main(String[] args){

        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

        String arguments = "-d " + compiledDir + " " + programsDir + fileName ;
        compiler.run(System.in, System.out, System.err, arguments);
    }

出力は次のとおりです。

javac: file not found: -d C:\compiled\ C:\programs\HelloWorld.java
Usage: javac <options> <source files>
use -help for a list of possible options

しかし、「-d C:\compiled\ C:\programs\HelloWorld.java」を切り取り、javac に貼り付けることができます。つまり、javac -d C:\compiled\ C:programs\HelloWorld.javaが機能します。

4

1 に答える 1