我用的是类javax.tools.JavaCompiler
(JDK6)编译源文件,但在源文件依赖于一些jar文件。 如何设置的类路径javax.tools.JavaCompiler
?
Answer 1:
所述javax.tools.JavaCompiler#getTask()方法把一个options
参数,允许设置编译器选项。 以下信息介绍了一种简单的方法来设置他们为了访问调用程序的类路径:
您需要配置标准的Java文件管理器来了解jar文件(S) - 您使用编译器选项参数来做到这一点。
默认情况下,Java编译器对象似乎只知道在它的类路径中的条款启动类路径,extdirs和endorseddirs目录的默认位置。
您需要调用程序的当前classpath添加到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);
所有你需要再运行是调用程序时得到适当的类路径设置。
Answer 2:
同样的问题也发生在我最近,终于让我找到两种解决方法。 您可以通过设置类路径调用StandardJavaFileManager.setLocation(StandardLocation.CLASS_PATH,“YOUR_CLASS_PATH”)或Compiler.getTask(ARG_0,ARG_1,ARG_2,CLASS_PATH_OPTIONS,就像第一个答案张贴在这里说。
文章来源: How to set classpath when I use javax.tools.JavaCompiler compile the source?