【问题标题】:Groovysh failing to start with java.lang.NoSuchMethodErrorGroovysh 无法以 java.lang.NoSuchMethodError 开始
【发布时间】:2018-10-26 08:49:13
【问题描述】:

尝试在 ubuntu(Ubuntu 18.04.1 LTS)上启动 groovy-shell 时遇到错误:

版本是

falk@falkpc:~$ groovysh -version
@|green Groovy Shell|@ 2.4.15

但调用 groovysh 失败:

falk@falkpc:~$ groovysh 
Gtk-Message: 18:37:05.964: Failed to load module "canberra-gtk-module"
FATAL: java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer;
    at jline.internal.InputStreamReader.<init>(InputStreamReader.java:104)
    at jline.console.ConsoleReader.setInput(ConsoleReader.java:330)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:248)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:236)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:228)
    at org.codehaus.groovy.tools.shell.PatchedConsoleReader.<init>(PatchedConsoleReader.groovy:31)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:258)
    at org.codehaus.groovy.tools.shell.InteractiveShellRunner.<init>(InteractiveShellRunner.groovy:56)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
    at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite.callConstructor(ConstructorSite.java:45)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:258)
    at org.codehaus.groovy.tools.shell.Groovysh.run(Groovysh.groovy:588)
    at org.codehaus.groovy.tools.shell.Groovysh$run$0.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169)
    at org.codehaus.groovy.tools.shell.Groovysh.run(Groovysh.groovy:574)
    at org.codehaus.groovy.tools.shell.Groovysh$run.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136)
    at org.codehaus.groovy.tools.shell.Main.startGroovysh(Main.groovy:184)
    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.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136)
    at org.codehaus.groovy.tools.shell.Main.main(Main.groovy:150)
    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:116)
    at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:138)

我成功地使用了这个安装有一段时间了。我不知道是什么变化导致了这种行为。

有什么想法吗?

编辑:安装后“Gtk-Message: ...”行不再出现

sudo apt install libcanberra-gtk-module

但是这还不能修复错误。

【问题讨论】:

    标签: java ubuntu groovy crash


    【解决方案1】:

    您需要使用 Java 9 运行 groovysh(请参阅 https://github.com/blynkkk/blynk-server/issues/752

    如果您不介意升级到最新版本,请执行以下操作:

    # install Java 11 OpenJDK
    sudo apt install openjdk-11-jdk
    
    # update JAVA_HOME (you can get dir via: update-java-alternatives -l)
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    
    groovysh
    

    【讨论】:

      【解决方案2】:

      可能缺少库/依赖项:canberra-gtk-module

      尝试安装相同的和以后的测试 groovysh:

      sudo apt install libcanberra-gtk-module
      

      已编辑:

      java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)

      可能,您正在使用不同版本/捆绑的 JDK/JRE 来编译和运行。

      【讨论】:

      • 谢谢。这确实修复了警告消息(“Gtk-Message ...”行)。但是,仍然出现以下错误。
      • “可能,您正在使用不同的版本/捆绑包来编译和运行。”我不确定你的意思:我真的只是想运行 groovysh。没有我要编译然后运行编译文件的源文件。相反,我只运行命令&gt; groovysh
      猜你喜欢
      • 2011-12-14
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 2022-12-08
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多