Duplicate :
|
JavaCompilerTool.setSourcePath(List) will throw IllegalArgumentException when List is empty Please see the testcase .. Tried in Solaris SunOS 5.10 Generic sun4u sparc SUNW,Ultra-60 <java-version> bash-3.00$ java -version java version "1.6.0-beta" Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-beta-b59a) Java HotSpot(TM) Client VM (build 1.6.0-beta-b59a, mixed mode) </java-version> <testcase> import java.io.File; import java.util.ArrayList; import javax.tools.JavaCompilerTool; import javax.tools.JavaFileManager; import javax.tools.ToolProvider; public class Test11 { public static void main(String[] args) { JavaCompilerTool javac = ToolProvider.defaultJavaCompiler(); JavaFileManager jfm = javac.getStandardFileManager(); javac.setSourcePath(new ArrayList<File>()); } } </testcase> In the above testcase the list size is zero. Output of the code when compiled and run... <output> bash-3.00$ java Test11 Exception in thread "main" java.lang.IllegalArgumentException: -sourcepath at com.sun.tools.javac.api.Tool.setOption1(Tool.java:188) at com.sun.tools.javac.api.Tool.setOption(Tool.java:200) at com.sun.tools.javac.api.Tool.setSourcePath(Tool.java:160) at Test11.main(Test11.java:11) </output> This behaviour is not mentioned in API docs CompilerAPI should ignore setting of sourcepath if the list is empty, rather throwing IllegalArgumentException.