我想在我的 groovy-Script 中使用 apache.common.net 库中定义的方法。
我首先下载并将其包含在我的配置中:
this.class.classLoader.rootLoader.addURL(new URL("file:///${currentDir}/lib/commons-net-3.3.jar"))
Run Code Online (Sandbox Code Playgroud)
之后,我尝试在我的 groovy 脚本中使用它,如下所示(为了清楚起见:import 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();
Run Code Online (Sandbox Code Playgroud)
我还为“导入”尝试了几个注释,例如
import org.apache.commons.net.ftp.FTPClient
Run Code Online (Sandbox Code Playgroud)
但我不断收到此错误:
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();
Run Code Online (Sandbox Code Playgroud)
我错过了什么?抱歉,我对 groovy 还是个新手:/
因此,您可以在启动脚本时将其添加到类路径中;
groovy -cp .;lib/commons-net-3.3.jar ftp.gy
Run Code Online (Sandbox Code Playgroud)
或者,您可以@Grab向脚本添加注释,Groovy 将在运行之前下载依赖项并将其添加到类路径中(但如果您的脚本在无法访问 Maven 的机器上执行,则这不起作用);
@Grab('commons-net:commons-net:3.3')
import org.apache.commons.net.ftp.*
...rest of your script...
Run Code Online (Sandbox Code Playgroud)
或者,如果您尝试,上面的类路径黑客路线应该可以工作:
this.getClass().classLoader.rootLoader.addURL(new File("lib/commons-net-3.3.jar").toURL())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13601 次 |
| 最近记录: |