Groovy 2.5 Java 10和sparkjava
我尝试在安装了Java10的服务器上运行这个groovy脚本(在Java8上运行良好)Groovy 2.5 Java 10和sparkjava,groovy,java-9,spark-java,java-10,Groovy,Java 9,Spark Java,Java 10,我尝试在安装了Java10的服务器上运行这个groovy脚本(在Java8上运行良好) @Grapes([ @Grab(group='org.slf4j', module='slf4j-api', version='1.7.25'), @Grab(group='ch.qos.logback', module='logback-classic', version='1.2.3'), @Grab(group='org.apache.commons',
@Grapes([
@Grab(group='org.slf4j', module='slf4j-api', version='1.7.25'),
@Grab(group='ch.qos.logback', module='logback-classic', version='1.2.3'),
@Grab(group='org.apache.commons', module='commons-lang3', version='3.7'),
@Grab(group='com.sparkjava', module='spark-core', version='2.7.2'),
@Grab(group='javax.xml.bind', module='jaxb-api', version='2.3.0'),
@Grab(group='com.sun.xml.bind', module='jaxb-core', version='2.3.0'),
@Grab(group='com.sun.xml.bind', module='jaxb-impl', version='2.3.0')
])
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
import groovy.util.logging.Slf4j
import org.apache.commons.lang3.exception.ExceptionUtils
import spark.Route
import static spark.Spark.*
@Slf4j
class Server {
public static void main(String[] args) {
int serverPort = args.length > 0 ? args[0].toInteger() : 1001
log.info("start server at $serverPort ... ")
port(serverPort)
get("/hello", { req, rep -> "world" })
}
}
但我总是遇到一个缺少依赖项的错误:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/opt/groovy-2.5.0-rc-3/lib/groovy-2.5.0-rc-3.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/JAXBContext
java.lang.NoClassDefFoundError: Unable to load class groovy.xml.jaxb.JaxbGroovyMethods due to missing dependency javax/xml/bind/JAXBContext
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)
通过查看,我们知道一些Java EE模块已被删除:
从JavaSE平台和
JDK
stacktrace谈到JAXB是JavaEE平台的一部分。
我建议使用哪个支持JDK 9/10
希望这有帮助。从groovy版本
2.5.0-rc-3的日志判断
升级到>=2.5.1
将解决该问题
注意:无需导入javax.xml.bind
您是否考虑过在邮件列表中提出此问题或向Jira提交错误?可能能够得到更快的响应,并且在最终的2.5版本之前可以修复?尝试使用--addmodules java.xml.bind
参数运行java 9或10运行时。对此有很多解释,例如,此处可能重复:警告:所有非法访问操作将在Groovy版本2.5.2 JVM:10.0.2的未来版本中被拒绝。供应商:“Oracle Corporation”OS:Linux