我使用类javax.tools.JavaCompiler
(jdk6)编译源文件,但源文件依赖于一些jar文件。如何设置类路径javax.tools.JavaCompiler
?
问问题
19223 次
2 回答
40
javax.tools.JavaCompiler#getTask()方法采用options
允许设置编译器选项的参数。以下消息描述了一种设置它们以访问调用程序的类路径的简单方法:
您需要配置标准 java 文件管理器以了解 jar 文件 - 您使用编译器选项参数来执行此操作。
默认情况下,java 编译器对象似乎只知道其类路径方面的 bootclasspath、extdirs 和 endorseddirs 目录的默认位置。
您需要将调用程序的当前类路径添加到通过标准文件管理器传递的 java 编译器实例,然后它将在 jar 文件中查找类。
这是我在编写的编译器包装器中的操作方式
List<String> optionList = new ArrayList<String>(); // set compiler's classpath to be same as the runtime's optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path"))); // any other options you want optionList.addAll(Arrays.asList(options)); JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);
然后,您需要做的就是在运行调用程序时设置正确的类路径。
于 2009-10-14T02:57:09.250 回答
5
我最近也遇到了同样的问题,最后我找到了两种解决方法。您可以通过调用StandardJavaFileManager.setLocation(StandardLocation.CLASS_PATH, "YOUR_CLASS_PATH")
或Compiler.getTask(ARG_0, ARG_1, ARG_2, CLASS_PATH_OPTIONS,
正如此处发布的第一个答案所说的那样设置类路径。
于 2011-12-10T08:04:19.063 回答