2015-08-24 49 views
2

我想在我的groovy-Script中使用apache.common.net库中定义的方法。导入Java库groovy

我第一次在我的配置下载并已将其列入:

  this.class.classLoader.rootLoader.addURL(new URL("file:///${currentDir}/lib/commons-net-3.3.jar")) 

后来我尝试使用它在我的Groovy脚本像这样(要清楚:进口萍萍*进口量也高于类加载器):

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 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仍然陌生:/

+0

(假设你在命令行运行脚本,而不是黑客的类加载器,不' groovy -cp。; lib/commons-net-3.3.jar ftp.gy'工作? –

+0

嗨,Tim,这有帮助,它的工作!谢谢。是否有可能以某种方式将该命令“嵌入”到脚本/配置本身? – Mattes

+0

在 –

回答

2

所以,当你启动你的脚本时,你可以将它添加到classpath中;

groovy -cp .;lib/commons-net-3.3.jar ftp.gy 

或者,你可以添加一个@Grab注释你的脚本,和Groovy将下载的依赖,并运行它之前加入到classpath中(但如果你的脚本是在一个盒子,没有进入执行这可不行到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()) 
+0

以下添加了一些选项类路径黑客路由不起作用,我无法访问maven,但是classpa在启动的作品中定义的所以我会用这个。谢谢! – Mattes