使用Java 11在groovyconsole中执行脚本会生成缺少的JAXB依赖项异常

使用Java 11在groovyconsole中执行脚本会生成缺少的JAXB依赖项异常,java,groovy,groovy-console,Java,Groovy,Groovy Console,我已经看到了关于这一点的其他问题,但绝大多数答案都指定了设置依赖项POM.xml文件,即用于在Intellij中运行groovy脚本。 我只是想让groovyconsole(在windows中)执行一行打印命令,但尽管尝试了各种设置JAVA_OPTS的排列方式,但没有任何效果。 当我设置JAVA_选项时,groovyconsole完全无法启动 我的java版本是jdk 11,groovy版本是3.0。我以为这一切都应该在groovy 2.6或其他版本中解决 C:\Users\J\Documen

我已经看到了关于这一点的其他问题,但绝大多数答案都指定了设置依赖项POM.xml文件,即用于在Intellij中运行groovy脚本。 我只是想让groovyconsole(在windows中)执行一行打印命令,但尽管尝试了各种设置JAVA_OPTS的排列方式,但没有任何效果。 当我设置JAVA_选项时,groovyconsole完全无法启动

我的java版本是jdk 11,groovy版本是3.0。我以为这一切都应该在groovy 2.6或其他版本中解决

C:\Users\J\Documents\Development>java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)

C:\Users\J\Documents\Development>javac -version
javac 11.0.5

C:\Users\J\Documents\Development>echo %JAVA_HOME%
C:\Program Files\Java\jdk-11.0.5    

C:\Users\J\Documents\Development>groovy --version
Groovy Version: 3.0.0-beta-3 JVM: 11.0.5 Vendor: Oracle Corporation OS: Windows 10
如果您让我参考另一个问题,请务必确保有一个答案能够真正解决这一特定问题,因为尽管对这些问题进行了深入研究,但我无法找到仅使用Java 11运行groovyconsole的答案。我重复这个问题是关于单独运行groovyconsole,而不是intellij中的任何groovy东西

我尝试过在命令行上设置JAVA_OPTS(例如
set JAVA_OPTS=--addmodules JAVA.xml.bind
);我曾尝试在调用groovyconsole时提供JAVA_选项(例如
groovyconsole-DJAVA_选项=--addmodules JAVA.xml.bind
)。 当我这样做时,groovyconsole根本无法启动。或者它确实启动了,但在我看到窗口启动之前就终止了

我也尝试过同样的方法来使用JAVA选项,但这没有什么区别;这就好像在启动groovyconsole时它甚至没有被使用/读取一样

我现在已经在这个问题上花费了好几个小时,这真的很可笑,所以是时候寻求帮助了

Edit我还尝试了以下两种方法,它们都“允许”groovyconsole启动,但都不能解决问题

C:\Users\J\Documents\Development>groovyconsole -D"JAVA_OPTS=--add-modules ALL-SYSTEM"
C:\Users\J\Documents\Development>groovyconsole -D"JAVA_OPTS=--add-modules java.xml.bind"
编辑我还尝试了以下方法,它们都会阻止控制台启动:

C:\Users\J\Documents\Development>set JAVA_OPTS="--add-modules java.xml.bind"
C:\Users\J\Documents\Development>set JAVA_OPTS="--add-modules ALL-SYSTEM"

Groovy JIRA中有一个关于这个文件的bug,但是它被关闭了,我发现如果我将Groovy-jaxb.jar文件移出
lib
dir,控制台就工作了

但是,我注意到字体已经变了(从2.5.7到2.5.8),变成了一种看起来更刺耳的固定宽度字体。这让我怀疑出了什么问题。我经常使用groovyconsole,所以我有点紧张

编辑 我发现我在
%HOME%/.groovy
中有一个
postInit.bat
文件。这个文件有一行

SET JAVA_OPTS=-Xmx1g -Dgroovy.console.output.limit=200000
我不得不把它改成

SET JAVA_OPTS=%JAVA_OPTS% -Xmx1g -Dgroovy.console.output.limit=200000

因为
%GROOVY_HOME%/bin
中的
startGroovy.bat
文件添加了属性
-Dgroovy.jaxb=jaxb
。我以前版本的文件正在删除Groovy设置的
JAVA\u OPTS

Groovy JIRA中有一个关于这个文件的bug,但是它被关闭了,我发现如果我将Groovy-jaxb.jar文件移出
lib
目录,控制台就工作了

但是,我注意到字体已经变了(从2.5.7到2.5.8),变成了一种看起来更刺耳的固定宽度字体。这让我怀疑出了什么问题。我经常使用groovyconsole,所以我有点紧张

编辑 我发现我在
%HOME%/.groovy
中有一个
postInit.bat
文件。这个文件有一行

SET JAVA_OPTS=-Xmx1g -Dgroovy.console.output.limit=200000
我不得不把它改成

SET JAVA_OPTS=%JAVA_OPTS% -Xmx1g -Dgroovy.console.output.limit=200000

因为
%GROOVY_HOME%/bin
中的
startGroovy.bat
文件添加了属性
-Dgroovy.jaxb=jaxb
。我以前版本的文件正在删除Groovy设置的
JAVA\u OPTS

我刚刚升级到JAVA 11,Groovy 2.5.8,我看到了同样的情况。GROOVY_HOME/lib下面有JAXB库,conf目录中的GROOVY-starter.conf文件似乎将它们放在类路径上,所以我不知道为什么它会被破坏。你找到解决办法了吗?嗨,肯,不,我没有。但我怀疑这与已安装的Java版本之间的冲突有关。
--addmodules Java.xml.bind
不适用于Java11,因为它已删除该模块。我将使用
set DEBUG=true
查看您的机器上实际发生了什么
startGroovy.bat
(由
groovyConsole.bat
调用)应该将
-Dgroovy.jaxb=jaxb
添加到
JAVA\u OPTS
,然后由
groovy starter.conf
使用。你可以检查一下,你还没有在你的类路径上创建一个自定义版本的conf文件。GROOVY_HOME/lib下面有JAXB库,conf目录中的GROOVY-starter.conf文件似乎将它们放在类路径上,所以我不知道为什么它会被破坏。你找到解决办法了吗?嗨,肯,不,我没有。但我怀疑这与已安装的Java版本之间的冲突有关。
--addmodules Java.xml.bind
不适用于Java11,因为它已删除该模块。我将使用
set DEBUG=true
查看您的机器上实际发生了什么
startGroovy.bat
(由
groovyConsole.bat
调用)应该将
-Dgroovy.jaxb=jaxb
添加到
JAVA\u OPTS
,然后由
groovy starter.conf
使用。您可以检查一下,您还没有在类路径上创建该conf文件的自定义版本。