【问题标题】:missing library after update to java 1.9更新到 java 1.9 后缺少库
【发布时间】:2018-02-23 16:27:56
【问题描述】:

想了解为什么从Java8更新到Java9后,需要在build.gradle中指定(Gradle版本:4.5.1):

compile group: 'com.google.guava', name: 'guava', version: '24.0-jre'

[编辑]:是的,这听起来可能很奇怪,但使用我构建的 Java 1.8 运行 gradle。使用 Java 1.9 运行它我需要在 build.gradle 文件中添加依赖项。

Java8:已构建 jdk1.8.0_162。

Java9:jdk-9.0.4 没有。

package com.google.common.cache does not exist

是否有一个我没有注意到的明显答案?

【问题讨论】:

  • 我不确定我是否明白你的问题。第一句话似乎是说,更新到 Java 9 后,您必须将 Guava 作为依赖项添加到您的 build.gradle。这是否意味着您在更新之前没有它? (回复此评论的最佳方式是澄清问题。)
  • 你应该写一个module-info.java并把这个包导入那里
  • @VinayPrajapati 它没有说明为什么在它工作之前运行它..!谢谢
  • 嘿@kmxillo 请通过JPMS 一段时间。此外,请分享您的系统、类路径的更多详细信息,并将完整的错误日志放在这里。
  • @VinayPrajapati 我必须用 9 构建它,但我会用 8 运行它。因此我不能使用 JPMS

标签: gradle build java-8 guava java-9


【解决方案1】:

如果您在问题中陈述的内容是正确的,我会假设有人(您?)或某些安装程序在 JDK8 的 ext/lib 文件夹中添加了番石榴,因此 java 会从那里使用它。

实际上是the "standard" way of adding external libraries into your JDK,但我不会这样做,除非有强有力的特定案例的原因。

【讨论】:

  • 我很确定我没有添加它。谢谢。
  • 您是否验证过它是否存在?
  • 是的。 /usr/lib64/jvm/jre-1.8.0-openjdk/lib/ext # ls cldrdata.jar dnsns.jar icedtea-sound.jar jaccess.jar localedata.jar 元索引 nashorn.jar sunec.jar sunjce_provider.jar sunpkcs11 .jar zipfs.jar
  • 在你提到“jdk1.8.0_162”的问题中,我们说的是JDK,而不是JRE,对吧?
  • 好吧,我用 jdk 构建它,但我用 jre 运行它。我在 jdk1.9 中没有看到任何 ext/lib 文件夹
【解决方案2】:

它与 java 9 无关。

有一个依赖项已更改,不再包含guava

这就是为什么必须明确声明guava

【讨论】:

    猜你喜欢
    • 2011-05-25
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多