我得到了带有ExecuteGroovyScript处理器的流文件,其中包含一些自定义代码。 效果很好:
但是如果我停止它并更改代码,则会出现此错误:
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后,处理器恢复正常并可以正常工作。
答案 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目录。