IllegalStateException:没有为 Guava 12.0 加载数据时无法获取工件?

Posted

技术标签:

【中文标题】IllegalStateException:没有为 Guava 12.0 加载数据时无法获取工件?【英文标题】:IllegalStateException: impossible to get artifacts when data has not been loaded for Guava 12.0? 【发布时间】:2013-05-12 23:04:17 【问题描述】:

在 Java Play 2.1.1 应用程序中,我收到以下错误:

[myproject] $ update
[info] Updating file:/C:/path/myproject/myproject...
[info] Resolving ...
[error] impossible to get artifacts when data has not been loaded. IvyNode = com.google.guava#guava;12.0
[error] (*:update) java.lang.IllegalStateException: impossible to get artifacts when data has not been loaded. IvyNode = com.google.guava#guava;12.0
[error] Total time: 230 s, completed 17.05.2013 19:16:41

Build.scala

"com.google.guava" % "guava" % "14.0.1",
"org.mydependency" % "mydependency" % "1.0-SNAPSHOT" changing() exclude("org.jboss.netty","netty") exclude("com.google.guava", "guava") exclude("log4j", "log4j"),

导致此错误(之前一切正常)的原因是 mydependency 中的依赖项更改:

旧:

<dependency>
    <groupId>com.thinkaurelius.titan</groupId>
    <artifactId>titan-berkeleyje</artifactId>
    <version>0.3.1</version>
</dependency>

新:

<dependency>
    <groupId>com.thinkaurelius.titan</groupId>
    <artifactId>titan-cassandra</artifactId>
    <version>0.3.1</version>
</dependency>

无论如何我都不想要 guava 12.0,它已经被排除在外了。

我可以告诉 Play 2.1.1 使用更新的 Ivy 吗?

plugins.sbt 我有:

addSbtPlugin("play" % "sbt-plugin" % "2.1.1")

临时修复 正如有人在这里提到的Apache IVY error message? : impossible to get artifacts when data has not been loaded 手动添加依赖项解决了它:我已经添加了

"com.google.guava" % "guava" % "12.0"

问题就解决了。

【问题讨论】:

当我的项目已经包含 slf4j-api 时,当我添加一个尝试传递引入 slf4j-api;1.6.1 的依赖项时,我刚刚遇到了这个问题;1.7.5。我通过建立上述依赖项intransitive()来解决它。 @gonfi-den-tschal 问题还存在吗? 其他人似乎仍有问题。我再也没有遇到过它,但是我仍在使用临时修复程序。好久没有碰过这个项目,也没有升级 Play。 @JacekLaskowski,我在 sbt 0.13.5 (在我的情况下为 commons-io 2.2)遇到了这个问题 【参考方案1】:

显然更多人有这个问题,所以我将我的解决方案作为答案:

临时修复 正如有人在这里提到的Apache IVY error message? : impossible to get artifacts when data has not been loaded 手动添加依赖项解决了它:我已经添加了

"com.google.guava" % "guava" % "12.0"

问题就解决了。

【讨论】:

【参考方案2】:

您可以尝试将此行添加到 .sbt 文件中,而不是使用较低版本:

dependencyOverrides += "com.google.guava" % "guava" % "14.0.1"

【讨论】:

【参考方案3】:

Play 2.1.x 使用 sbt 0.12,它使用 Ivy 2.3.0-rc1,但看起来这仍然是一个问题。 如果您可以使用公开可用的库提出复制步骤,请打开带有此评论链接的 Github 问题。

【讨论】:

以上是关于IllegalStateException:没有为 Guava 12.0 加载数据时无法获取工件?的主要内容,如果未能解决你的问题,请参考以下文章

错误:java.lang.IllegalStateException:没有包含点

不存在的 JAR 的“IllegalStateException:没有文件或目录匹配”

如何解决 java.lang.IllegalStateException:没有主机?

java.lang.IllegalStateException:RecyclerView 在 Fragment 中没有 LayoutManager

java.lang.IllegalStateException:没有可用的事务性 EntityManager

IllegalStateException:没有可用于处理的 EJB 接收器