我正在开发一个项目,其中部署在 JBoss 服务器上的企业存档(ear)需要动态编译(和运行)一个类。我正在使用 JavaCompiler 类来执行此操作 - 复杂性来自这样一个事实,即正在编译的类引用了包含在耳朵内的 ejb jar 中的一些类。
当部署的耳朵在部署时“爆炸”时,这不是问题,因此它只是一个目录而不是存档 - 在这种情况下,我可以在编译器的 -classpath 选项中指定所需的 jar,并且编译工作美好的。不幸的是,由于我正在使用的系统的限制,将这些耳朵“爆炸”部署不是一个可接受的解决方案,并且编译器似乎无法“看到”所需的 jar,当它被打包在档案中时。
鉴于动态编译是从有问题的耳朵进行的,因此系统的类加载器可以访问所需 jar 的内容,有什么办法可以告诉编译器只使用系统类加载的类装载机?
我很欣赏这是一个冗长的问题,但任何帮助将不胜感激。
谢谢