【发布时间】:2011-08-17 22:20:45
【问题描述】:
我不知道如何设置compilationTask 的源文件。
我试过了:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
List<String> optionList = new ArrayList<String>(Arrays.asList("-d","build/classes"));
List<String> classes = new ArrayList<String>();
classes.add("src/Hello.java");
CompilationTask task = compiler.getTask(null, null, null, optionList, classes, null);
task.call();
但我收到以下错误:
线程“main”java.lang.IllegalArgumentException 中的异常:不是有效的类名:src/Hello.java
当然,如果我使用 null 而不是 classes,我会得到“没有源文件”,因为没有给出源文件。在此之前我尝试使用JavaCompiler 的运行函数,但我无法在字符串参数中指定选项(或者我不知道如何)。
解决办法如下:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
List<String> optionList = new ArrayList<String>(Arrays.asList("-d","build/classes"));
Iterable<? extends JavaFileObject> classes = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(new File("src/Hello.java")));
CompilationTask task = compiler.getTask(null, null, null, optionList,null, classes);
task.call();
【问题讨论】:
-
你解决过这个问题吗?如果是这样,您介意发布您的解决方案吗?
-
帖子已更新解决方案
标签: java compiler-construction java-compiler-api