提取groovy jar

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提取groovy jar相关的知识,希望对你有一定的参考价值。

我有一个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代码中被提取。

答案

你不需要提取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()

以上是关于提取groovy jar的主要内容,如果未能解决你的问题,请参考以下文章

Grails 没有从 BuildConfig.groovy 将 jars 添加到类路径

在 Groovy 中将字符串 XML 片段转换为文档节点

使用 groovy 脚本创建可执行 jar

如何在SOAP UI中使用groovy从字符串中提取数字id

无法在 Android Studio 3.3 Beta 2 中下载 groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.15)

在 java 的 pom 中找不到工件 org.codehaus.groovy:groovy-all:jar:2.5.6 [重复]