gpt4 book ai didi

maven - 第谷:Bundle X - 缺少约束:Bundle-RequiredExecutionEnvironment:JavaSE-1.7

转载 作者:行者123 更新时间:2023-12-04 23:49:24 25 4
gpt4 key购买 nike

我已将 BREE 从 JavaSE-1.6 更改为至 JavaSE-1.7在我的应用程序的 list 文件中:

Bundle-RequiredExecutionEnvironment: JavaSE-1.7

现在我无法再次编译应用程序。

当我跑 mvn clean install我得到:
[INFO] Resolving dependencies of MavenProject: Xgroup:X:4.0.100-SNAPSHOT @ C:\Users\....\X\pom.xml
[WARNING] The following locally built units have been used to resolve project dependencies:
[WARNING] Za
[WARNING] Zb
[INFO] Resolving class path of MavenProject: Xgroup:X:4.0.100-SNAPSHOT @ C:\Users\....\X\pom.xml
[ERROR] Internal error: java.lang.RuntimeException: org.osgi.framework.BundleException: Bundle X cannot be resolved
[ERROR] Resolution errors:
[ERROR] Bundle X - Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.7
[ERROR] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: org.osgi.framework.BundleException: Bundle X cannot be resolved
Resolution errors:
Bundle X - Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.7

我的 toolchains.xml包含:
  <toolchain>
<type>jdk</type>
<provides>
<version>1.7</version>
<vendor>sun</vendor>
<id>JavaSE-1.7</id>
</provides>
<configuration>
<jdkHome>C:\Java\jdk1.7.0_45</jdkHome>
</configuration>
</toolchain>

当我跑 mvn -version Java 版本似乎没问题:
Apache Maven 3.0.4 (r1232337; 2012-01-17 09:44:56+0100)
Maven home: C:\Tools\apache-maven-3.0.4\bin\..
Java version: 1.7.0_17, vendor: Oracle Corporation
Java home: C:\Java\jdk1.7.0_17\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"

我想我的 JAVA_HOME 是正确的,但我不确定。 echo %JAVA_HOME%版画 C:\Java\jdk1.7.0_17\jre . related problem on the Tycho-Mailing list已通过正确设置 JAVA_HOME 解决,但我的问题似乎有所不同。

我在 0.19.0 版本中使用 Tycho。我也试过更新的版本,但这并没有改变任何东西。

最佳答案

仔细查看日志消息 - 您不太可能收到错误消息

[ERROR] Bundle X - Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.7

Tycho 解析依赖项和依赖包 X 的不同包项目 Y 的编译类路径。找到错误之前的最后一条以下日志消息:
[INFO] Resolving class path of MavenProject: ...

此行显示哪个项目存在解析问题。

如果失败的项目实际上是依赖于包 X 的不同包 Y,您应该检查 Bundle-RequiredExecutionEnvironment捆绑包 Y 的 header :如果捆绑包 Y 声明例如JavaSE-1.6 的 BREE,预计构建失败。原因如下:除非另外配置,Tycho 假设您希望在提供 BREE header 中指定的执行环境的 OSGi 容器中运行捆绑包 Y。在示例中,这将是 JavaSE-1.6 VM 上的 OSGi 容器。但是在这样的容器中,Y 无法启动,因为它依赖于无法启动的 X。这就是 Tycho 检测到的以及构建失败的原因。

您可以通过不同的方式处理这种情况:
  • 还要更改捆绑包 Y 的 BREE header 。如果您知道 Y 将始终与需要 JavaSE-1.7 的捆绑包 X 版本一起运行,那么这尤其有意义。
  • 与 BREE header 分开配置包 Y 的执行环境,例如通过 executionEnvironment目标平台配置(不推荐)。这也可能会更改包 Y 为其编译的 JRE,因此包 Y 可能实际上不再在 Java 6 上运行。因此,只有在您完全理解 implications of the execution environment on the build 时才使用此选项。 .
  • 通过设置目标平台配置参数 resolveWithExecutionEnvironmentConstraints 禁用 Tycho 对执行环境约束的检查至 false (从第谷 0.22.0 开始)。 This may make sense如果您的捆绑包 Y 运行的版本或捆绑包 X 的实现可能与您在编译时使用的版本完全不同。


  • 如果失败的项目是 bundle X 项目本身,那么(父)POM 或 build.properties 中有一些配置使 Tycho 使用与 Bundle-RequiredExecutionEnvironment 中指定的环境不同的、较低的执行环境。捆绑包 X 的 header (有关详细信息,请参阅 documentation on the execution environment configuration)。您可能应该删除此冲突的冗余配置。

    关于maven - 第谷:Bundle X - 缺少约束:Bundle-RequiredExecutionEnvironment:JavaSE-1.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348497/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com