Nifi ExecuteGroovyScript-类已在另一个类加载器中加载

时间:2019-02-25 11:08:10

标签: java groovy bigdata apache-nifi

我得到了带有ExecuteGroovyScript处理器的流文件,其中包含一些自定义代码。 效果很好:

enter image description here

但是如果我停止它并更改代码,则会出现此错误:

enter image description here

  

java.lang.UnsatisfiedLinkError:本机库   /data/nifi_flow/dec-enr/pseudo/lib/libpseudojni.so已加载到   另一个类加载器:java.lang.UnsatisfiedLinkError:本机库   /data/nifi_flow/dec-enr/pseudo/lib/libpseudojni.so已加载到   另一个类加载器java.lang.UnsatisfiedLinkError:本机库   /data/nifi_flow/dec-enr/pseudo/lib/libpseudojni.so已加载到   另一个类加载器           在java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1907)           在java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)           在java.lang.Runtime.loadLibrary0(Runtime.java:870)           在java.lang.System.loadLibrary(System.java:1122)           在fr.cnam.p7.pseudo.jni.PseudoJNI。(PseudoJNI.java:6)           在java.lang.Class.forName0(本地方法)           在java.lang.Class.forName(Class.java:348)           在org.codehaus.groovy.runtime.callsite.CallSiteArray $ 1.run(CallSiteArray.java:68)           在org.codehaus.groovy.runtime.callsite.CallSiteArray $ 1.run(CallSiteArray.java:65)           在java.security.AccessController.doPrivileged(本机方法)           在org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:65)           在org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:162)           在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)           在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)           在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)           在Scriptffffffffc26c8c01.run(Scriptffffffffc26c8c01.groovy:26)           在org.apache.nifi.processors.groovyx.ExecuteGroovyScript.onTrigger(ExecuteGroovyScript.java:438)           在org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)           在org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1122)           在org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147)           在org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47)           在org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run(TimerDrivenSchedulingAgent.java:128)           在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)

重新启动nifi后,处理器恢复正常并可以正常工作。

1 个答案:

答案 0 :(得分:3)

根据stacktrace

at java.lang.System.loadLibrary(System.java:1122) 
at fr.cnam.p7.pseudo.jni.PseudoJNI.(PseudoJNI.java:6) 
at Scriptffffffffc26c8c01.run(Scriptffffffffc26c8c01.groovy:26)

您从脚本加载的类(PseudoJNI)尝试加载本机库

每次更改groovy脚本或新类加载器使用的其他参数时,因为@Grab或添加的类路径可用于您的脚本。

从第二个类加载器调用System.loadLibrary()会触发错误。您可以尝试将包含PseudoJNI类的库放入nifi / lib目录。