我得到了一个带有 ExecuteGroovyScript 处理器的流文件,其中包含一些自定义代码。它运作良好:
但是如果我停止它并更改代码,我会收到此错误:
java.lang.UnsatisfiedLinkError: Native Library /data/nifi_flow/dec-enr/pseudo/lib/libpseudojni.so already loaded in another classloader: java.lang.UnsatisfiedLinkError: Native Library /data/nifi_flow/dec-enr/pseudo/lib/libpseudojni.so already loaded in another classloader java.lang.UnsatisfiedLinkError: Native Library /data/nifi_flow/dec-enr/pseudo/lib/libpseudojni.so already loaded in another classloader at 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 fr.cnam.p7.pseudo.jni.PseudoJNI.(PseudoJNI.java:6) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at org.codehaus.groovy.runtime.callsite.CallSiteArray$1.run(CallSiteArray.java:68) at org.codehaus.groovy.runtime.callsite.CallSiteArray$1.run(CallSiteArray.java:65) at java.security.AccessController.doPrivileged(Native Method) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:65) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:162) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at Scriptffffffffc26c8c01.run(Scriptffffffffc26c8c01.groovy:26) at org.apache.nifi.processors.groovyx.ExecuteGroovyScript.onTrigger(ExecuteGroovyScript.java:438) at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27) at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1122) at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147) at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:128) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
重启 nifi 后,处理器恢复正常并再次正常工作。
根据堆栈跟踪
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 目录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句