java 上下文加载器_如何将JDK6 ToolProvider和JavaCompiler与上下文类加载器一起使用?...
我的用例是使用JDK 6中提供的ToolProvider和
JavaCompiler類從java程序編譯生成的源文件.源文件包含對上下文類加載器中的類的引用(它在J2EE容器中運行),但不包含在系統類加載器中.我的理解是,默認情況下,ToolProvider將使用系統類加載器創建JavaCompiler實例.
有沒有辦法為JavaCompiler指定一個類加載器?
我嘗試了這種方法,從IBM DeveloperWorks上的某些東西進行了修改:
FileManagerImpl fm =
new FileManagerImpl(compiler.getStandardFileManager(null,null,null););
將FileManagerImpl定義為:
static final class FileManagerImpl
extends ForwardingJavaFileManager {
public FileManagerImpl(JavaFileManager fileManager) {
super(fileManager);
}
@Override
public ClassLoader getClassLoader(JavaFileManager.Location location) {
new Exception().printStackTrace();
return Thread.currentThread().getContextClassLoader();
}
}
堆棧跟蹤表明它僅在注釋處理期間調用一次.我驗證了要編譯的源文件中引用的類不在系統類路徑中,但可以從上下文類加載器中獲得.
總結
以上是生活随笔為你收集整理的java 上下文加载器_如何将JDK6 ToolProvider和JavaCompiler与上下文类加载器一起使用?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java为什么要初始化_JAVA中到底要
- 下一篇: java map常用类及其方法_Day5