导入Java库groovy。

8
我希望在我的Groovy脚本中使用Apache.common.net库中定义的方法。
我首先下载并将其包含在我的配置文件中:
            this.class.classLoader.rootLoader.addURL(new URL("file:///${currentDir}/lib/commons-net-3.3.jar"))

接下来,我尝试像这样在我的 Groovy 脚本中使用它(为了清楚起见:导入 pimpim。* 还导入了上面的 classLoader):

    import pimpim.*

import org.apache.commons.net.ftp.*

def pm = PM.getInstance("test")


public class FileUploadDemo {
  public static void main(String[] args) {
    FTPClient client = new FTPClient();

我尝试了几种关于“import”注释的方法,比如:
import org.apache.commons.net.ftp.FTPClient

但是我一直收到这个错误提示:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Y:\pimconsole\scripts\ftp.gy: 11: unable to resolve class FTPClient
 @ line 11, column 15.
       FTPClient client = new FTPClient();

我错过了什么?抱歉,我对Groovy还很陌生 :/


假设您正在从命令行运行脚本,而不是黑客类加载器,那么 groovy -cp .;lib/commons-net-3.3.jar ftp.gy 是否可行? - tim_yates
嗨,Tim,这很有帮助,而且它有效!谢谢。是否有可能将该命令以某种方式“嵌入”到脚本/配置本身中? - Mattes
下面添加了几个选项。 - tim_yates
1个回答

5
因此,当您启动脚本时,可以将它添加到类路径中;
groovy -cp .;lib/commons-net-3.3.jar ftp.gy

或者,您可以在您的脚本中添加@Grab注解,Groovy会在运行之前下载依赖项并将其添加到类路径中(但如果您的脚本在无法访问maven的计算机上执行,则此方法可能无法正常工作)。

@Grab('commons-net:commons-net:3.3')
import org.apache.commons.net.ftp.*

...rest of your script...

如果你尝试,上述的类路径修改方法应该有效:

this.getClass().classLoader.rootLoader.addURL(new File("lib/commons-net-3.3.jar").toURL())

类路径黑客路线不起作用,我也无法访问Maven,但启动时的类路径定义有效,所以我会使用它。谢谢! - Mattes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接