NiFi ExecuteGroovyScript无法解决的类JSch

0

的问题

该groovyscript以下是用于获取文件,从远程机器使用蔽. 我需要获取文件使用蔽

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类是不可或进口是不适当的。

apache-nifi groovy
2021-11-23 21:05:03
1

最好的答案

1

你要下载jsch库 http://www.jcraft.com/jsch/ 和把罐子到nifi/lib directory

或如果你nifi服务器已经接入互联网可以使用这个脚注解下载的图书馆从公共仓库

@Grab(group='com.jcraft', module='jsch', version='0.1.55')
import com.jcraft.jsch.*
...
2021-11-23 23:49:45

是的库失踪。 谢谢。 我想PutSFTP在内部使用com.jcraft.jsch.ChannelSftp.放,使这个图书馆将是可用
likeGreen

daggett

即便如此,图书馆内部nar(nifi处理器束)没有直接可以通过运行类路径。 每束有自己类装入器和限制图书馆。 你可以看到它在 nifi/work/nar/extensions 子文件夹。 你可以用这些图书馆通过executegroovyscript-其他类路径--但我并不推荐这一点。
daggett

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................