Nifi ExecuteGroovyScript - класс, уже загруженный в другой загрузчик классов - PullRequest
0 голосов
/ 25 февраля 2019

Я получаю потоковый файл с процессором 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-enrpseudo / lib / libpseudojni.so уже загружен в другой загрузчик классов на java.lang.ClassLoader.loadLibrary0 (ClassLoader.java:1907) на java.lang.ClassLoader.loadLibrary (ClassLoader.java:1857) на java.lang.Runtime.loadib(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 (собственный метод) в организации.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite (CallSiteArray.java:65) в org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite (CallSiteArray.java:162site.ov.g.time.grov.g.time.grov.CallSiteArray.defaultCall (CallSiteArray.java:48) в org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:113) в org.codehaus.groovy.runtime.callsite.AbstractCallSiteSite.allSiteSite.All117) в Scriptffffffffc26c8c01.run (Scriptffffffffc26c8c01.groovy: 26) в org.apache.nifi.processors.groovyx.ExecuteGroovyScript.onTrigger (ExecuteGroovyScript.java:438) в org.apache.orcess.orj.Proj.: 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.rol.conf.TimerDrivenSchedulingAgent $ 1.run (TimerDrivenSchedulingAgent.java:128) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511)

После перезапуска nifi процессор возвращается к нормальной работе и работаетхорошо еще раз.

1 Ответ

0 голосов
/ 25 февраля 2019

в соответствии с трассировкой стека

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 или добавленный classpath может использоваться для вашего сценария.

вызов System.loadLibrary() из второго загрузчика классов вызывает ошибку.Вы можете попробовать поместить библиотеку, содержащую класс PseudoJNI, в каталог nifi / lib.

...