java - `groovyConsole` 无法在带有 java 8 的 Ubuntu 18.04 上启动,如何解决?
问题描述
当我从终端运行 groovyConsole 时,它放弃了一个异常:
$ groovyConsole
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:116)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:138)
Caused by: groovy.lang.MissingMethodException: No signature of method: javax.swing.JMenu.setMnemonic() is applicable for argument types: (java.lang.String) values: [F]
Possible solutions: setMnemonic(char), setMnemonic(int), getMnemonic()
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:71)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:77)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:80)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:177)
at groovy.ui.view.BasicMenuBar$_run_closure1.doCall(BasicMenuBar.groovy:22)
at groovy.ui.view.BasicMenuBar$_run_closure1.doCall(BasicMenuBar.groovy)
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.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
at groovy.lang.Closure.call(Closure.java:420)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.util.FactoryBuilderSupport.dispatchNodeCall(FactoryBuilderSupport.java:899)
at groovy.util.FactoryBuilderSupport.doInvokeMethod(FactoryBuilderSupport.java:791)
at groovy.util.FactoryBuilderSupport.invokeMethod(FactoryBuilderSupport.java:511)
at groovy.util.FactoryInterceptorMetaClass.invokeMethod(FactoryBuilderSupport.java:1322)
at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:46)
at groovy.lang.Script.invokeMethod(Script.java:80)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:74)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:83)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169)
at groovy.ui.view.BasicMenuBar.run(BasicMenuBar.groovy:21)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1181)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1164)
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.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:352)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169)
at groovy.ui.Console$__clinit__closure25.doCall(Console.groovy:267)
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.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:41)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
at groovy.ui.ConsoleView$_run_closure1.doCall(ConsoleView.groovy:62)
at groovy.ui.ConsoleView$_run_closure1.doCall(ConsoleView.groovy)
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.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
at groovy.lang.Closure.call(Closure.java:420)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.util.FactoryBuilderSupport.dispatchNodeCall(FactoryBuilderSupport.java:899)
at groovy.util.FactoryBuilderSupport.doInvokeMethod(FactoryBuilderSupport.java:791)
at groovy.util.FactoryBuilderSupport.invokeMethod(FactoryBuilderSupport.java:511)
at groovy.util.FactoryInterceptorMetaClass.invokeMethod(FactoryBuilderSupport.java:1322)
at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:46)
at groovy.lang.Script.invokeMethod(Script.java:80)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:74)
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:177)
at groovy.ui.ConsoleView.run(ConsoleView.groovy:59)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1181)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1164)
at groovy.util.FactoryBuilderSupport$build$4.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:128)
at groovy.ui.Console.run(Console.groovy:308)
at groovy.ui.Console$run$1.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 groovy.ui.Console.run(Console.groovy:271)
at groovy.ui.Console$run$0.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:120)
at groovy.ui.Console.main(Console.groovy:205)
... 6 more
enter code here
我的系统是:
$ groovy --version
Groovy Version: 2.4.16 JVM: 1.8.0_222 Vendor: Private Build OS: Linux
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
如何避免这个错误?
解决方案
您正面临Debian、Ubuntu和Groovy问题跟踪器中报告的已知问题。
问题已在 Groovy 版本中修复2.6.0-alpha-1
。该修复程序在 Ubuntu 软件包版本和 Debian 软件包版本中被反向移植(参见Debian 补丁) 。2.4.17-4ubuntu1
2.4.17-2
在 Ubuntu Bionic 18.04 LTS 中,可用的 Groovy 软件包版本是2.4.16-1ubuntu1~18.04.1
(以及2.4.16-2
在 Debian 中)。
版本2.4.17-4ubuntu1
在 Ubuntu Focal 20.04 LTS 中可用(目前2.4.20-1
在 Debian 测试中)。
所以我想对你来说最简单的解决方案可能是升级到 Ubuntu Focal 20.04 LTS版本。
另一种方法是仅安装 Focal 20.04 中的 groovy 软件包,并保持其他软件包未修改(即保持 Ubuntu Bionic 18.04 提供的版本)。这种解决方案涉及封装钉扎。您可以在Ubuntu wiki、Debian wiki或这本出色的 Debian 管理员手册中了解更多信息。
推荐阅读
- azure - 将 Azure Function 的输出设置为 Cosmos DB 后出现 404
- c# - 如何使用 c# 连接到 phpmyadmin mysql 数据库(使用 Mysql.Data.MysqlClient;)
- chart.js - 可以用 ChartJS 创建象限图,“原点”集中在一个点上吗?
- sql-server - SSIS 数据转换失败。将全为“00000000”的字段导入字符字段时可能丢失数据
- azure-web-app-service - 选择节点版本时权限被拒绝的部署问题
- android - 应用程序关闭后,工作变量被销毁
- mongodb - 当 MongoDB 的文档说 ObjectID“可能是唯一的”时,它是什么意思?
- javascript - 防止 Webpack 删除 jQuery 函数?
- asp.net-core - 配置 OData 测试服务器
- ios - Scenekit 场景需要太长时间才能显示在视图上