HUX布斯
所述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'soptionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path")));// any other options you wantoptionList.addAll(Arrays.asList(options));JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);然后,您需要做的就是在运行调用程序时获取正确的类路径设置。