NiFi ExecuteGroovyScript 无法解析 class JSch

NiFi ExecuteGroovyScript unable to resolve class JSch

下面的 groovyscript 用于使用 sftp 从远程计算机获取文件。我需要使用 sftp

获取文件
import groovy.json.JsonSlurper
import com.jcraft.jsch.*

java.util.Properties config = new java.util.Properties()
config.put "StrictHostKeyChecking", "no"

JSch ssh = new JSch()
def rfile = "/path/to/remote/file/on/remote/host";
Session sess = ssh.getSession 'user','host', 22
sess.with {
setConfig config
setPassword password
connect()
Channel chan = openChannel "sftp"
chan.connect()
ChannelSftp sftp = (ChannelSftp) chan;

def flowFile = session.get()
if(!flowFile) return
flowFile.write{rawIn, rawOut->
    def keyValueList = rawIn.withReader("UTF-8"){ new JsonSlurper().parse(it) }
    sftp.get("rfile/abc.txt").withReader("UTF-8"){reader->
        rawOut.withWriter("UTF-8"){writer->
            reader.eachLine{line->
               keyValueList.each{ if(it.Key) line = line.replaceAll(it.Key, it.Value) }
               writer << line << '\n'
            }
        }
    }
}
chan.disconnect()
disconnect()
REL_SUCCESS << flowFile
}

获取错误:

 unable to resolve class JSch @ line 7, column 6. JSch ssh = new JSch()  org.codehaus.groovy.syntax.SyntaxException

我正在使用导入 import com.jcraft.jsch.*,但似乎 JSch class 不可用或导入不正确。

您必须从 http://www.jcraft.com/jsch/ 下载 jsch 库并将 jar 放入 nifi/lib 目录

或者如果您的 nifi 服务器可以访问互联网,您可以使用此脚本注释从 public 存储库

下载库
@Grab(group='com.jcraft', module='jsch', version='0.1.55')
import com.jcraft.jsch.*
...