Groovy 2.5 Java 10 和 Sparkjava

标签 groovy java-9 spark-java java-10

我尝试在安装了 java 10 的服务器上运行这个 groovy 脚本(在 java 8 上运行良好)。

@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) 

最佳答案

查看 JEP 320我们知道一些 Java EE 模块已被删除:

Remove the Java EE and CORBA modules from the Java SE Platform and the JDK

堆栈跟踪谈论 JAXB 是 Java EE 平台的一部分。 我建议使用Groovy v3.x支持 JDK 9/10。

希望这有帮助。

关于Groovy 2.5 Java 10 和 Sparkjava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50540710/

相关文章:

groovy - 从范围列表中删除重叠范围 Groovy

angular - 是否可以更改现有 Grails 应用程序的配置文件?

java - SparkJava Web浏览器下载html文件而不是在部署war文件时显示

java - 刷新 SparkJava 服务的静态文件

read-eval-print-loop - 在 Java 9 上,为什么 System.getenv() 的输出在 jshell 中不完整?

java - 如何使用 Spark 在服务器上运行 java 程序?

grails - GSP/Groovy - g :each with array of objects

groovy - gradle build.gradle 依赖项 - oracle 驱动程序?

java - 删除 jre/lib/ext 的 Jarsigner 问题

java - Intellij 在编译期间看不到一些非公共(public) JDK 9 类