java - 关于运行时不是 'perfect match' 到 'RequiredExecutionEnvironment' 的警告是怎么回事?

标签 java eclipse maven osgi

在使用 Java/Eclipse/Maven/OSGi 时,我经常遇到这个警告:

类路径上的 JRE 容器与“JavaSE-1.6”执行环境并不完美

我使用的是 Java 7 JDK。大多数项目需要(我认为这是正确的)比那个版本低的版本。例如,它们将需要 JavaSE-1.6 或 JavaSE-1.5。所以在他们的 MANIFEST.MF 中,这些项目将有一个看起来像这样的条目(示例取 self 的捆绑项目):

Bundle-RequiredExecutionEnvironment: JavaSE-1.6

这会给我提到的警告。现在,我知道有两种可能的方法来“解决”这个警告:

  1. 用 Java 6 运行时替换项目的当前运行时环境
  2. 将 MANIFEST 条目更改为 JavaSE-1.7

这两种“解决方案”在我看来都非常可笑。我的项目不需要 JavaSE-1.7。它在 JavaSE-1.6 上运行良好。要求 bundle 的所有用户至少拥有 Java 7,仅仅因为开发人员使用的是 Java 7 并且不喜欢警告,在我看来这与您想要的相反。另一方面,要求我作为开发人员安装所有版本的 Java,这些版本在我工作的项目中被列为必需的执行环境,这似乎几乎同样荒谬。所有这些项目在 Java 7 上都运行良好,那么为什么我需要有很多项目呢?

我是否完全遗漏了某些东西(在这种情况下我是 not the only one ),或者这个警告真的很愚蠢,因为它正在积极插入开发人员为他们设置更高要求的执行环境严格需要的项目?任何见解(并希望有第三种方法来消除此警告)将不胜感激。

最佳答案

有三种可能的方法可以消除警告:

  1. 将项目的当前运行时环境替换为 Java 6 运行时(推荐)
  2. 将 MANIFEST 条目更改为 JavaSE-1.7
  3. 更改build设置以忽略警告

用 Java 6 运行时替换项目的当前运行时环境

这是推荐的解决方案。该警告试图说明的是,指定最低要求的 Java 6 执行环境,但随后在开发过程中使用 Java 7 环境本身就有风险,因为您可能会编写一些仅适用于 Java 7 的代码,并且您不会注意到这一点,直到您部署到 Java 6 环境,它破坏了(感谢 greg-449Konstantin Komissarchik 在评论中提到这一点)

第 1 步:添加新的 Java 6 运行时环境:

窗口 -> 首选项 -> Java/已安装的 JRE -> 按钮“添加...”

Eclipse preferences, Java/Installed JREs

第2步:选择新添加的JRE作为项目的运行时

项目 -> 属性 -> Java 构建路径

Eclipse Project properties, Java Build Path


将 MANIFEST 条目更改为 JavaSE-1.7

这个解决方案很简单。最大的缺点是您将迫使项目的所有用户将他们的 Java 运行时升级到您正在使用的任何版本。因此,如果您还想支持较旧的运行时,那就不太好了。


更改build设置以忽略警告

只是让 Eclipse 停止提示。 警告:小心使用。忽略警告可能会让您在没有注意到的情况下错过与旧 VM 的向后兼容性。

Window -> Preferences -> Java/Compiler/Building(或等效的每个项目页面,如果适用):

Java Building preference page

关于java - 关于运行时不是 'perfect match' 到 'RequiredExecutionEnvironment' 的警告是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768492/

相关文章:

java - 来自 Url 的 android JSON

java - Apache POI : separate logic for xls and xlsx?

java - 为什么我的 Java 项目将 DLL 放在 JAVA_HOME\jre6\bin 中时可以在 Eclipse 中成功调用它们,但使用 java.library.path 却失败?

Maven跳过站点/报告模块

java - 应该如何访问已编译 jar 中的资源?

java - Java中的超时方法

java - Eclipse Indigo 安装 m2e-wtp 插件时出现问题

eclipse - 如何在 Eclipse 中为 Servlet API 添加 Javadoc

eclipse - Eclipse 中的 Maven/AJDT 项目

maven - 什么是 Maven 存储库?