提取groovy jar

问题描述 投票:0回答:1

我有一个jar文件,其中包含一些类,从那个jar文件我想运行一个特定的类假设A.class

在运行时,我在我的代码中添加jar文件并提取其内容。从提取的文件夹中。之后我创建了GroovyClassloader并将提取的文件夹路径添加到groovy类加载器的类路径中。之后我在groovy classloader的帮助下加载A.class。直到这个代码我工作正常,但是当我试图创建A.class的实例时,代码抛出类不是另一个依赖类A.class的fount异常,即如果A.class导入B.class比创建实例的时候A.class代码抛出未找到的B类的例外。也许是因为类加载器不同。

任何人都可以建议我如何解决这个问题。

我的代码是:

new UnZip().unZipIt(<groovy/jar/path>,</unzip/dir/path>);
GroovyClassLoader gcl = new GroovyClassLoader();
gcl.addClasspath(<unzip/dir/path>);
Class<?> klass = gcl.loadClass("A");
klass.newInstance();

PS:jar文件很常见,文件在java代码中被提取。

groovy classpath
1个回答
0
投票

你不需要提取jar。只需将jar添加到类路径:gcl.addClasspath(<groovy/jar/path>);

下面的代码通过url将jar添加到类加载器gcl中。但是,您可以通过filepath添加它。

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()
© www.soinside.com 2019 - 2024. All rights reserved.