groovysh дает java .lang.reflect.InvocationTargetException - PullRequest
1 голос
/ 14 февраля 2020

Groovy версия: Groovy Версия: 3.0.0-r c -3 JVM: 1.8.0_221 Поставщик: Oracle Корпорация ОС: Linux

при рабочей команде: groovysh Ошибка вывода:

    java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:106)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:124)
Caused by: java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no jansi in java.library.path, /tmp/libjansi-64-3695606470401720252.so: /tmp/libjansi-64-3695606470401720252.so: failed to map segment from shared object: Operation not permitted]
        at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182)
        at org.fusesource.hawtjni.runtime.Library.load(Library.java:140)
        at org.fusesource.jansi.internal.CLibrary.<clinit>(CLibrary.java:42)
        at org.fusesource.jansi.AnsiConsole.wrapOutputStream(AnsiConsole.java:48)
        at org.fusesource.jansi.AnsiConsole.<clinit>(AnsiConsole.java:38)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.lambda$createCallStaticSite$2(CallSiteArray.java:65)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:63)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:156)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119)
        at org.apache.groovy.groovysh.Main.installAnsi(Main.groovy:249)
        at org.apache.groovy.groovysh.Main.setTerminalType(Main.groovy:235)
        at org.apache.groovy.groovysh.Main.main(Main.groovy:120)
        ... 6 more

1 Ответ

1 голос
/ 14 февраля 2020

Насколько я знаю, проблема такого рода возникает не от самого Groovy, а от вашего пользователя, не имеющего прав на запись в / tmp. Например, если ваш tmp монтируется только для чтения.

Справочная информация: Jansi требуются нативные библиотеки, которые являются частью jar. Java не может загрузить их из банки и требует, чтобы они были помещены «куда-то», обычно это / tmp. Поскольку кажется, что ваш tmp не может быть записан, вы получаете «Операция не разрешена».

...