【发布时间】:2013-05-10 07:58:58
【问题描述】:
我正在做一个项目,其中部署在 JBoss 服务器上的企业存档(ear)需要动态编译(和运行)一个类。我正在使用 JavaCompiler 类来执行此操作 - 复杂性来自于这样一个事实,即正在编译的类引用了包含在耳朵内的 ejb jar 中的一些类。
当部署的耳朵在部署时“爆炸”时,这不是问题,所以它只是一个目录而不是存档 - 在这种情况下,我可以在编译器的 -classpath 选项中指定所需的 jar,并且编译工作正常。不幸的是,由于我正在使用的系统的限制,将这些耳朵“爆炸”部署不是一个可接受的解决方案,并且编译器似乎无法“看到”所需的 jar,当它被包裹在档案中时。
鉴于动态编译是从有问题的耳朵进行的,因此系统的类加载器可以访问所需 jar 的内容,有什么方法可以告诉编译器只使用加载的类系统类加载器?
我很欣赏这是一个冗长的问题,但我们将不胜感激。
谢谢
【问题讨论】:
标签: classpath classloader java-ee-6 ear java-compiler-api