我们正在使用第三方工具(Snowbound docViewer),该工具有望执行应用程序的类文件,该文件作为参数传递给工具。但是这个工具只有在我们运行run-app时才能找到传递给它的类,它与war文件一起使用。但是,当war部署到独立的tomcat服务器时同样有效。可能是用于执行工具的类加载器与我们的应用程序不同。
我正在尝试加载类
File file = Locator.getClassSource(DocumentContentHandler)
def classLoader = BootStrap.class.classLoader.rootLoader
String path = Locator.fileToURL(file)
classLoader.addURL(new URL(path +'com/mycompany/snowbound/DocumentContentHandler.class'));
生成的Url值为:
"file:/Users/amitjain/projects/mycompany/target/classes/com/mycompany/snowbound/DocumentContentHandler.class"
我得到的例外是
java.lang.ClassNotFoundException: com.mycompany.snowbound.DocumentContentHandler
at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:175)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:147)
at org.codehaus.groovy.grails.cli.support.GrailsRootLoader.loadClass(GrailsRootLoader.java:51)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.snowbound.clientcontentserver.RetrievalProcessorConfigurator.initContentClass(RetrievalProcessorConfigurator.java:977)
即使我执行以下操作,也会发现类未找到异常。
Class.forName('com.mycompany.snowbound.DocumentContentHandler', true, BootStrap.class.classLoader.parent)
我可以在这做什么?谢谢,