我有一个jar文件,其中包含一些类,我想从该jar文件中运行特定的类,假设A.class
。
在运行时,我正在代码中添加该jar文件并提取其内容。从解压缩的文件夹中。之后,我创建GroovyClassloader
并将提取的文件夹路径添加到groovy classloader的classpath中。之后,我借助groovy类加载器加载A.class
。直到这段代码,我都可以正常工作,但是当我尝试创建A.class
的实例时,代码抛出该类不是A.class
的其他从属类的异常源,即{{1与创建A.class
代码实例时相比,}}导入B.class
引发了A.class
类的异常。可能是因为类加载器不同。
任何人都可以建议我如何解决这个问题。
我的代码是:
B
PS:jar文件很普通,文件用Java代码扩展。
答案 0 :(得分:0)
您不需要提取jar。只需将jar添加到类路径:gcl.addClasspath(<groovy/jar/path>);
下面的代码通过url将jar添加到类加载器gcl
中。但是,您可以通过文件路径添加它。
GroovyClassLoader gcl = new GroovyClassLoader();
gcl.addClasspath('http://central.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar');
Class<?> klass = gcl.loadClass("org.apache.commons.io.output.NullWriter");
def o = klass.newInstance();
println o.getClass()