调用javacompiler.run()时找不到Javac文件



我正在尝试使用 javacompiler.run()进行动态生成的源文件。以下是我的程序,当我运行它时,我可以进入系统。ERR:

javac:找不到文件:c:.. bla..bla .. test a.java c:.. bla..bla .. test b.java c:.. bla..bla..bla。。 test c.java 用法:Javac 使用-HELP作为可能的选项列表

文件未编译,但是当我放入命令提示符

时进行了汇编。

javac c:.. bla..bla .. test a.java c:.. bla..bla .. test b.java c:.. bla..bla..bla .. test test a.java

这是完整的源代码

// define the classes
String stringA = "package test;" + " "
    + "public class A { " 
    + "public A() { B b = new B(); b.b(); }" + " "
    + "public static boolean a() { return true;}" + " " 
    + "}";
String stringB = "package test;" + " " 
    + "public class B { " 
    + "public B() { }" + " "
    + "public boolean b() { return new C().c(); }" + " " 
    + "}";
String stringC = "package test;" + " " 
    + "public class C { " 
    + "public C() { }" + " "
    + "public boolean c() { return A.a(); }" + " " 
    + "}";
// Save sources in .java files then compile    
String pathA = store("test/A.java", stringA);
String pathB = store("test/B.java", stringB);
String pathC = store("test/C.java", stringC);
StringBuilder pathBuilder = new StringBuilder();
pathBuilder.append(pathA);
pathBuilder.append(" ");
pathBuilder.append(pathB);
pathBuilder.append(" ");
pathBuilder.append(pathC);
String files = pathBuilder.toString();
// run compiler
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, files);
...

存储(文件名,源)保存文件源并将完整路径返回到存储的文件。

我找到了解决方案,我应该致电 javacompiler.run() this:

compiler.run(null, null, null, pathA, pathB, pathC);

只需提供源文件作为单独参数的每个路径,而不是将不同的路径与 run()提供单个参数!我注意到并非所有 Javac 选项都由通过 toolprovider.getSystemjavacompiler()

最新更新