我已将以下依赖项包含在我的 gradle 项目的 build.gradle 文件中,以便与 VertexAi LLM 库一起使用。
implementation group: 'dev.langchain4j', name: 'langchain4j-vertex-ai', version: '0.22.0'
我在测试主要功能时遇到问题。
Idea IntelliJ 提示说它无法在 com.google.guava:guava:32.1.2-jre 的两个变体之间进行选择(这是 VertexAi 依赖项的依赖项)
我收到以下错误消息
The consumer was configured to find an API of a library compatible with Java 11, preferably in the form of class files, and its dependencies declared externally.
However we cannot choose between the following variants of com.google.guava:guava:32.1.2-jre
- androidApiElements
- jreApiElements
我认为我需要使用 jreApiElements 变体,因为我只处理 Web 应用程序。 IDE 看起来很混乱,因为两种变体都提供了相同数量的参数。
All of them match the consumer attributes:
- Variant 'androidApiElements' capabilities com.google.collections:google-collections:32.1.2-jre and com.google.guava:guava:32.1.2-jre declares an API of a library compatible with Java 8, packaged as a jar, and its dependencies declared externally:
- Unmatched attributes:
- Provides attribute 'org.gradle.jvm.environment' with value 'android' but the consumer didn't ask for it
- Provides release status but the consumer didn't ask for it
- Variant 'jreApiElements' capabilities com.google.collections:google-collections:32.1.2-jre and com.google.guava:guava:32.1.2-jre declares an API of a library compatible with Java 8, packaged as a jar, and its dependencies declared externally:
- Unmatched attributes:
- Provides attribute 'org.gradle.jvm.environment' with value 'standard-jvm' but the consumer didn't ask for it
- Provides release status but the consumer didn't ask for it
请让我知道如何选择 jreApiElements 变体,同时排除 androidApiElements 变体。最好在 build.gradle/project gradle 设置中执行此操作,因为我希望代码是可移植的。
我尝试过以下解决方案:
在 gradle 包装属性中设置正确的 gradle 版本 文件
添加参数applicationDefaultJvmArgs = ["-org.gradle.jvm.environment=standard-jvm"] 到 build.gradle 文件 (这导致构建失败,所以我将其删除)
在build.gradle中添加以下2个依赖项
实施组:'com.google.cloud',名称:'google-cloud-aiplatform',版本:'3.24.0'
实现组:'com.google.guava',名称:'guava',版本:'32.1.2-jre'
以上解决方案均无效。请让我知道如何排除番石榴依赖的 android 变体
我们从一些 Gradle 专家那里得到的建议列在我们的发行说明中。 (我真的应该在我们的主页上提到它,抱歉。)
sourceSets.all {
configurations.getByName(runtimeClasspathConfigurationName) {
attributes.attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
}
configurations.getByName(compileClasspathConfigurationName) {
attributes.attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
}
}
我们还被告知,从 Gradle 6 升级到 Gradle 7 可能会消除这种需要。
也就是说,我们听说过一些不同但相关的问题。因此,如果这对您的情况没有帮助,有人可能可以提供另一种可能的解决方案。
我遇到了https://github.com/google/guava/issues/6612#issuecomment-1618157335对我有用:
buildscript {
configurations.classpath {
attributes.attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
}
}
我正在将旧的 Gradle 项目从 v4 升级到 v8,在 v6 时遇到了这个问题。
在升级番石榴时,以下内容似乎对我有用,
implementation ('com.google.guava:guava:33.1.0-jre'){
attributes{
attribute(Attribute.of("org.gradle.jvm.environment", String),"standard-jvm")
}
}