JDK-6355209 : JavaCompilerTool.setSourcePath(List) will throw IllegalArgumentException when List is empty
  • Type: Bug
  • Component: tools
  • Sub-Component: javac
  • Affected Version: 6
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2005-11-24
  • Updated: 2010-04-02
  • Resolved: 2005-12-06
Related Reports
Duplicate :  
Description
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.