Java9+移除 Java EE,导致我的 groovy 脚本无法运行

2018-07-06 10:44:15 +08:00
 Cbdy

以以下这段代码为例

@Grab('org.jsoup:jsoup:1.10.1')
import org.jsoup.Jsoup

Jsoup.connect('https://v2ex.com').get()
    .select('span.item_title > a').each {
    println it.text() + ':' + 'https://v2ex.com' + it.attr('href')
}

原本是 groovy2.5+java8,可以正常跑,然后我前两天格盘重装了 mojave,直接上了 Java10,就不行了,报以下错

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/usr/local/Cellar/groovy/2.5.0/libexec/lib/groovy-2.5.0.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
Caught: java.lang.NoClassDefFoundError: Unable to load class groovy.xml.jaxb.JaxbGroovyMethods due to missing dependency javax/xml/bind/Unmarshaller
java.lang.NoClassDefFoundError: Unable to load class groovy.xml.jaxb.JaxbGroovyMethods due to missing dependency javax/xml/bind/Unmarshaller
	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)

谷歌,爆栈网都翻了一番,还是没有找到解决方法,哪位大佬指点迷津?

5866 次点击
所在节点    Java
12 条回复
orangeade
2018-07-06 10:51:20 +08:00
Java 8,Java9 还不是 LTS 吧
unlimitedsola
2018-07-06 10:51:20 +08:00
orangeade
2018-07-06 10:51:36 +08:00
说错,Java9,Java10
unlimitedsola
2018-07-06 10:52:17 +08:00
上面发的不是最新版 我随便点的一个
ivyxjc
2018-07-06 10:52:27 +08:00
stackoverflow 43574426
hcymk2
2018-07-06 10:53:03 +08:00
Cbdy
2018-07-06 10:58:44 +08:00
@unlimitedsola @ivyxjc @hcymk2 你们真的试过了吗?我发帖前已经看过一圈了,都不行,我是用 groovy script.groovy 运行的
hcymk2
2018-07-06 11:07:32 +08:00
@Cbdy
JAVA_OPTS
Cbdy
2018-07-06 11:16:37 +08:00
@hcymk2 这个方法我在 stackoverflow 上看到了,是可行但是 quick and dirty 的方法,java11 把 module 移除之后还是跑不了😳,有没有一劳永逸的方法呢?
beny2mor
2018-07-06 11:19:15 +08:00
Java9 和 Java10 都没有碰过,我们老大说先别管 Jva8 用着先
blindpirate
2018-07-06 11:54:26 +08:00
add-module java.xml.bind 把 java.xml.bind 加到 root modules 里
rffan
2018-07-06 16:12:58 +08:00
--add-modules=ALL-SYSTEM 我直接这么干的,简单粗暴。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/468583

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX