开发者社区> 问答> 正文

java11编译报错

java版本

java -version openjdk version "11.0.5" 2019-10-15 OpenJDK Runtime Environment (build 11.0.5+10) OpenJDK 64-Bit Server VM (build 11.0.5+10, mixed mode)

gradle版本

./gradlew -version


Gradle 5.6.4

Build time: 2019-11-01 20:42:00 UTC Revision: dd870424f9bd8e195d614dc14bb140f43c22da98

Kotlin: 1.3.41 Groovy: 2.5.4 Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019 JVM: 11.0.5 (Oracle Corporation 11.0.5+10) OS: Linux 4.19.84-1-lts amd64

错误日志

Task :mtool-server:startScripts Errors occurred while build effective model from /home/liyf/.gradle/caches/modules-2/files-2.1/com.alibaba/druid/1.1.21/bb00033125ec9d5696e848c6b1e6fc58efe11ac3/druid-1.1.21.pom: 'dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-tools.jar in com.alibaba:druid:1.1.21 'dependencies.dependency.systemPath' for com.sun:jconsole:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-jconsole.jar in com.alibaba:druid:1.1.21 'dependencies.dependency.systemPath' for com.alibaba:jconsole:jar must specify an absolute path but is ${env.JAVA_HOME}/lib/jconsole.jar in com.alibaba:druid:1.1.21 'dependencies.dependency.systemPath' for com.alibaba:tools:jar must specify an absolute path but is ${env.JAVA_HOME}/lib/tools.jar in com.alibaba:druid:1.1.21

原提问者GitHub用户overstart

展开
收起
山海行 2023-07-05 19:31:16 90 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    如果在使用Java 11编译Druid时报错,可能的原因是:

    Druid还不支持Java 11
    Druid目前仍然只支持Java 8,并没有正式支持Java 11。

    Druid使用了Java API,Java 11中移除
    有些 Druid 使用的Java API 在Java 11中已移除,导致编译无法通过。

    Druid使用了Java 11弃用的API
    Druid 使用的某些API在Java 11中已经被弃用,需要更新。

    相关的错误有:

    cannot find symbol 错误
    util.regex包被移除
    sun.misc 包被移除
    为了解决这个问题,主要有几种方法:

    降级JDK到Java 8,继续使用Druid现有版本

    升级Druid到支持Java 11的版本

    从Druid 1.1.16开始支持Java 11,需要升级到这个版本及以上。

    修改Druid源码使其兼容Java 11
    需要对使用了移除/弃用API的代码进行修改,使其能在Java 11下工作。

    使用Druid alternatives
    如使用HikariCP代替Druid,HikariCP已经支持Java 11。

    总的来说,由于Druid尚不支持Java 11,编译时会有错误。

    降级JDK到Java 8或者升级Druid到支持Java 11的版本是最简单的方式。

    修改源码和切换数据源则需要相对复杂一点。

    2023-07-30 16:31:56
    赞同 展开评论 打赏
  • 加jaxb试试,是直接 JDK8升级到 JDK11的吧

    原回答者GitHub用户yansheng723

    2023-07-06 11:00:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载