当前位置: 首页 > 知识库问答 >
问题:

消费者被配置为查找与Java11兼容的库的运行时,打包为jar,其依赖项在外部声明,但:

景阳曜
2023-03-14

在升级应用程序使用的一个本机java库后,此错误消息开始阻止构建我的Flatter应用程序:

A problem occurred configuring root project 'android'.
> Could not resolve all artifacts for configuration ':classpath'.
   > Could not resolve androidx.room:room-runtime:2.3.0-rc01.
     Required by:
         project : > no.nordicsemi.android:mesh:3.1.5
      > No matching variant of androidx.room:room-runtime:2.3.0-rc01 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally but:
          - Variant 'releaseApiPublication' capability androidx.room:room-runtime:2.3.0-rc01 declares a library, and its dependencies declared externally:
              - Incompatible because this component declares an API of a component, with the library elements 'aar' and the consumer needed a runtime of a component, packaged as a jar
              - Other compatible attribute:
                  - Doesn't say anything about its target Java version (required compatibility with Java 11)
          - Variant 'releaseRuntimePublication' capability androidx.room:room-runtime:2.3.0-rc01 declares a runtime of a library, and its dependencies declared externally:
              - Incompatible because this component declares a component, with the library elements 'aar' and the consumer needed a component, packaged as a jar
              - Other compatible attribute:
                  - Doesn't say anything about its target Java version (required compatibility with Java 11)
          - Variant 'sourcesElements' capability androidx.room:room-runtime:2.3.0-rc01 declares a runtime of a component, and its dependencies declared externally:
              - Incompatible because this component declares documentation and the consumer needed a library
              - Other compatible attributes:
                  - Doesn't say anything about its target Java version (required compatibility with Java 11)
                  - Doesn't say anything about its elements (required them packaged as a jar)

项目build.gradle文件包含(除其他外):

dependencies {
    implementation fileTree(dir: 'mesh-release', include:['*.aar'])

    implementation 'no.nordicsemi.android:mesh:3.1.5'

    implementation 'androidx.room:room-runtime:2.3.0-rc01'
    annotationProcessor 'androidx.room:room-compiler:2.3.0-rc01'
    androidTestImplementation 'androidx.room:room-testing:2.3.0-rc01'
}

库的aar文件(mesh-release.aar)存储在名为“mesh-release”的文件夹中,该文件夹还包含一个包含以下内容的文件:

configurations.maybeCreate("default")
artifacts.add("default", file('mesh-release.aar'))

你有什么办法解决这个问题吗?不幸的是,降级到以前使用的版本不是一个选项。。。


共有1个答案

潘弘壮
2023-03-14

我错误地将本机库依赖项放入build.gradle文件中:

  1. android/build。gradle(本地库的gradle文件)

除此之外,distributionUrl位于示例/android/gradle/wrapper/gradle-wrapper。属性已更新到最新版本。

 类似资料:
  • 我正在使用 maven 来打包一个带阴影的 jar 文件。我浏览了其他关于这个问题的帖子,但没有找到答案。我也没有使用提供作为元素。 我将log4j-core作为一个依赖项包含在pom.xml中,但是当maven-shade-plugin构建时,它排除了该依赖项中的类?我下载了jar的2.5版,检查了一下,包和类都在里面。 我不得不排除一些org.slf4j类,但这不应该影响它。 这里是pom.x

  • 在我的身材中。gradle file I升级了一个依赖项的版本(即:com.db:microservice commons)。加载gradle更改后,我收到以下错误消息: 文件“C:\Projects\Container\mschmidt\mount\booking service\standalone\build”的第50行。gradle的外观如下: 我不知道该怎么办。JDK项目和Gradle

  • 但是,这样做的缺点是将报告为未使用,可能是因为编译不需要它: 我不能使用依赖项,因为我不希望该依赖项传递性地继承(例如,下游依赖项可以使用log4j等)。我使用尝试了,但结果是相同的警告。 (注意,我还可以为依赖插件设置,但这似乎是一个非常生硬的工具,会隐藏其他潜在的问题。)

  • 在我的gradle java库项目中,我依赖于一个本地jar文件(工件不在任何地方发布)。依赖项配置如下所示: 当我将我的库发布到maven local中,然后从另一个项目中将其拉入时,3RDParty文件夹中jar中的符号在类路径上不可用,尽管它被列为api依赖项。这仅仅是在库模块中直接使用jar文件的限制吗?

  • 问题内容: Eclipse捆绑包(例如,在激活器代码中)如何在运行时找到依赖的Bundle实例?我想找到Eclipse选择满足依赖要求的捆绑软件,我不想自己解释清单。 一个例子:我想在我当前捆绑包所依赖的所有捆绑包中找到所有名为“ marker.txt”的资源。还有传递依赖。为了做到这一点,我需要能够找到所有这些捆绑包。 问题答案: 没有简单的方法来确定依赖关系。最好的方法是通过PackageAd

  • 我正在开发一个Java项目,使用maven作为依赖项管理器/构建工具。我当前在将依赖项的依赖项解析到正确版本时遇到问题。 有问题的依赖项称为JasperReports-Functions-6.1.0.jar,它不是托管在maven repo中,而是以jar形式提供的。 如何强制jar依赖项使用子依赖项的某个版本?