无法启动Groovy控制台-缺少依赖项javax / xml / bind / Unmarshaller

时间:2018-08-01 03:59:13

标签: groovy

Groovy版本:2.5.1 Java版本:10.0.2

尝试启动groovyConsole,我得到以下信息:

$ groovyConsole
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/usr/local/opt/groovy/libexec/lib/groovy-2.5.1.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:114)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:136)
Caused by: java.lang.NoClassDefFoundError: Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/Unmarshaller
        at org.codehaus.groovy.vmplugin.v5.Java5.configureClassNode(Java5.java:407)
        at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:280)
        at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:400)
        at org.codehaus.groovy.macro.transform.MacroMethodsCache.scanExtClasses(MacroMethodsCache.java:88)
        at org.codehaus.groovy.macro.transform.MacroMethodsCache.access$000(MacroMethodsCache.java:45)
        at org.codehaus.groovy.macro.transform.MacroMethodsCache$2.onModule(MacroMethodsCache.java:69)
        at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:87)
        at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:81)
        at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:63)
        at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:54)
        at org.codehaus.groovy.macro.transform.MacroMethodsCache.getMacroMethodsFromClassLoader(MacroMethodsCache.java:76)
        at org.codehaus.groovy.macro.transform.MacroMethodsCache$1.provide(MacroMethodsCache.java:53)
        at org.codehaus.groovy.macro.transform.MacroMethodsCache$1.provide(MacroMethodsCache.java:50)
        at org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache.getAndPut(ConcurrentCommonCache.java:147)
        at org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache.getAndPut(ConcurrentCommonCache.java:123)
        at org.codehaus.groovy.macro.transform.MacroMethodsCache.get(MacroMethodsCache.java:50)
        at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.findMacroMethods(MacroCallTransformingVisitor.java:118)
        at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.visitMethodCallExpression(MacroCallTransformingVisitor.java:89)
        at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:70)
        at org.codehaus.groovy.ast.CodeVisitorSupport.visitExpressionStatement(CodeVisitorSupport.java:122)
        at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitExpressionStatement(ClassCodeVisitorSupport.java:197)
        at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:42)

更多.......................................

4 个答案:

答案 0 :(得分:4)

在IntelliJ中使用Java 11.0.2和groovy 2.5.5时也遇到了相同的问题。

找到了这篇有帮助的帖子! https://www.logicbig.com/tutorials/misc/groovy/intellij.html

基本上必须添加JAXB依赖项

  

如果您正在使用Groovy 2.5.3 + Java 11(还请查看与Java 11相关的更改),还必须添加JAXB依赖项。 Groovy带有额外的JAXB Jars,因此我们可以添加它们。打开“项目结构”对话框,然后选择“依赖项”选项卡并添加依赖项,如图所示

答案 1 :(得分:1)

2.5.1的发行说明中包含三个建议:

http://groovy-lang.org/releasenotes/groovy-2.5.html#Groovy2.5releasenotes-Addendum251

在2.5.2中,大概在一两个星期之后,您将不需要这样做-如果要立即尝试从CI服务器获取快照版本。

答案 2 :(得分:0)

当我用groovy 2.5.4和Java 10调试一些groovy脚本时,我也得到了这一点。

设置JAVA_OPTS=--add-modules java.xml.bind为我解决了上述问题。

答案 3 :(得分:0)

我可以通过将jaxb模块添加到我的gradle文件中来解决此问题。我喜欢此解决方案,因为它可以更改项目配置文件,而无需进入IDE设置。

dependencies {
  implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: '3.0.1'
  implementation group: 'org.codehaus.groovy', name: 'groovy-jaxb', version: '3.0.1'
}