另一个“构建路径指定执行环境JavaSE-13”。问题

时间:2020-06-02 19:11:52

标签: java eclipse

因此,完整的警告看起来像 Build path specifies execution environment JavaSE-13. There are no JREs installed in the workspace that are strictly compatible with this environment.
我刚刚安装了JDK(版本:here的14.0.1)和Eclipse(版本:here的2020-03(4.15.0))
我已经读过post1post2,但是在Java-> Build Path-> User library中没有任何库。它是空的。在“已安装的库”中,我没有任何jdk {version}。我只有名字“ JDK”和位置“ D:\ ...”
我缺少重要的东西吗?因为我不知道如何解决。
我是新蜂,因此,如果您有答案或以下问题,请写得简单些。谢谢。

1 个答案:

答案 0 :(得分:0)

这确实应该是一个评论,但我感觉很想说清楚。这里要注意的主要事情是,使用Java至少要运行4次,并且没有严格阻止您每次配置4个不同版本的情况,这可能会起作用,也可能不会起作用。添加Eclipse,它将至少达到5:

  1. 用于运行Eclipse本身的Java二进制文件。 (通过eclipse.ini配置)
    • 这可能会影响插件的行为。我记得一个场景,其中m2e将拒绝使用比运行Eclipse的JRE版本更旧的Java合规性级别。我不能从头顶打起特定的电话,但这是要记住的。
    • 应该是最新的,也是最好的,尽管Java 8似乎是晦涩场景的防御性选择,例如依赖于不推荐使用的内部库的项目。 (我想到了tools.jar
  2. 用于构建项目的javac(java编译器)二进制文件。 (位于JDK的bin子目录中的Java二进制文件旁边)
    • 也应该是最新的和最伟大的:每个javac版本都能够编译为先前版本编写的源代码,并为较旧版本生成兼容的字节代码。这就是以下两点。
  3. 告诉Javac断言您的代码与之兼容的Java版本。 (javac -source参数)
  4. Javac被告知使您的内部版本兼容的Java版本。 (javac -target参数;等于或大于-source的值)
  5. 用于运行构建的Java二进制文件。
    • 也应该是最新的和最大的版本,尽管此处所需的最低版本是通过-target给javac的版本,并且确实存在不兼容的情况。
    • 这里的最新趋势是为每个Java应用程序提供其自己的JRE,以排除由于用户以不兼容的方式配置或安装Java而引起的问题。然后将要求用户运行特制的本机可执行文件或快捷方式,然后将使用正确的参数调用Java以启动应用程序。

现在,您甚至不调用javac或java。实际上,前者甚至没有被Eclipse调用。 Eclipse实际上带有自己的Java编译器Eclipse Compiler for Java (ECJ)。对于它的价值,我们通常不需要担心。为了使Eclipse知道有关可用JRE的任何信息,您需要将磁盘上的JDK位置与Eclipse“已知”的Java版本进行匹配。这是在Window -> Preferences -> Java -> Installed JREs -> Execution Environments下完成的。

这样做之后,它们应该在您可以指定Java版本的所有位置弹出,主要是Project设置,并且可能运行您已经设置或Eclipse为您设置的配置。然后可以将项目设置设置为最高,以从配置为运行构建的JRE版本推断出构建的合规性级别。

顺便说一句,请注意,您可能要使用AdoptOpenJDK而不是Oracle针对reasons发布的版本。您还希望将不是最新JRE的所有JRE解压缩到硬盘驱动器上某个位置的漂亮文件夹中,而不是安装它们。从操作系统的文件浏览器启动时,安装它们主要意味着使.jar文件在该版本上运行。如果您使用的是Linux,目前sdkman是首选的方式。

相关问题