groovysh提供java.lang.reflect.InvocationTargetException

groovysh提供java.lang.reflect.InvocationTargetException,groovy,groovyshell,Groovy,Groovyshell,Groovy版本: Groovy版本:3.0.0-rc-3 JVM:1.8.0\u 221供应商:Oracle公司操作系统:Linux 在运行命令时:groovysh 错误输出: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccess

Groovy版本: Groovy版本:3.0.0-rc-3 JVM:1.8.0\u 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
java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:106)
位于org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:124)
原因:java.lang.UnsatifiedLinkError:无法加载库。原因:[java.library.path,/tmp/libjansi-64-3695606470401720252.so中没有jansi:/tmp/libjansi-64-3695606470401720252.so:无法从共享对象映射段:不允许操作]
位于org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182)
位于org.fusesource.hawtjni.runtime.Library.load(Library.java:140)
位于org.fusesource.jansi.internal.CLibrary(CLibrary.java:42)
位于org.fusesource.jansi.AnsiConsole.wrapoutStream(AnsiConsole.java:48)
位于org.fusesource.jansi.AnsiConsole(AnsiConsole.java:38)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:348)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.lambda$createCallStaticSite$2(CallSiteArray.java:65)
位于java.security.AccessController.doPrivileged(本机方法)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:63)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:156)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:119)
位于org.apache.groovy.groovysh.Main.installAnsi(Main.groovy:249)
位于org.apache.groovy.groovysh.Main.setTerminalType(Main.groovy:235)
位于org.apache.groovy.groovysh.Main.Main(Main.groovy:120)
... 还有6个

据我所知,这种问题不是来自Groovy本身,而是来自您的用户没有/tmp的写入权限。例如,如果您的tmp是只读安装的


背景:Jansi需要本机库,它们是jar的一部分。Java无法从jar加载它们,并要求将它们放在“某处”,通常是/tmp。既然您的tmp似乎无法编写,您就得到了“不允许的操作”。

我不是说,它会修复它,但是为什么不试试3.0.0而不是RC呢?