问题描述
我得到了带有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)at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)at java.lang.Runtime.loadLibrary0(Runtime.java:870)at java.lang.System.loadLibrary(System.java:1122)at .cnam.p7.pseudo.jni.PseudoJNI。(PseudoJNI.java:6),位于org.codehaus的java.lang.Class.forName0(本机方法),位于java.lang.Class.forName(Class.java:348)。 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的org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:162)的org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:65) org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java(113)处的org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite)处的.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) .java:117)位于org.apache.nifi.processors.groovyx.ExecuteGroovyScript.onTrigger(ExecuteGroovyScript.java:438)处Scriptffffffffc26c8c01.run(Scriptffffffffc26c8c01.groovy:26)处。 org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1122)的org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147)的AbstractProcessor.java:27) .nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTa sk.java:47),位于org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run(TimerDrivenSchedulingAgent.java:128),位于java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)
重新启动nifi后,处理器将恢复正常并可以正常工作。
1楼
根据堆栈跟踪
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目录。