Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将默认的EclipseOxygen编译器遵从性级别从9更改为1.8,而不将其恢复为9?_Java_Eclipse_Java 9_Eclipse Oxygen - Fatal编程技术网

Java 如何将默认的EclipseOxygen编译器遵从性级别从9更改为1.8,而不将其恢复为9?

Java 如何将默认的EclipseOxygen编译器遵从性级别从9更改为1.8,而不将其恢复为9?,java,eclipse,java-9,eclipse-oxygen,Java,Eclipse,Java 9,Eclipse Oxygen,当我在Eclipse-Oxygen中打开工作区时,默认的编译器符合性级别设置为9。我在Preferences>Java>Compiler中将其更改回1.8,然后单击Apply。它可以工作,直到我关闭Eclipse并重新打开它,现在它又回到了9。我怎样才能使零钱保持不变 注意: 我知道/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.compliance被设置为9,但我找不到它在哪里。我无法复制您的法规遵从性更改在重启期间不持

当我在
Eclipse-Oxygen
中打开工作区时,默认的编译器符合性级别设置为
9
。我在
Preferences>Java>Compiler
中将其更改回
1.8
,然后单击Apply。它可以工作,直到我关闭Eclipse并重新打开它,现在它又回到了
9
。我怎样才能使零钱保持不变

注意:
我知道
/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.compliance
被设置为9,但我找不到它在哪里。

我无法复制您的法规遵从性更改在重启期间不持久的问题,但是您可以手动设置它们,而不是使用eclipse的GUI。为此:

  • 接近日食
  • 找到您的首选项文件。这是一个文本文件,包含许多通常在Eclipse中使用窗口>首选项指定的设置。该文件将位于.metadata目录下的工作区目录中,名称如下:

    .metadata.plugins\org.eclipse.core.runtime.settings\org.eclipse.jdt.core.prefs

  • 在文本编辑器中打开文件org.eclipse.jdt.core.prefs,并编辑以下三行:

org.eclipse.jdt.core.compiler.codegen.targetPlatform=9

org.eclipse.jdt.core.compiler.compliance=9

org.eclipse.jdt.core.compiler.source=9

  • 对于JDK1.8合规性,用“1.8”替换“9”的三个实例(对于JDK10合规性,用“10”替换)。这三个属性对应于您在编译器屏幕上看到的指定版本的三个字段,如下所示
  • 重新启动Eclipse并转到首选项>Java>编译器。编译器的设置现在应全部设置为1.8:


这种方法对我有效。但是,即使这种方法解决了您的问题,您仍然可以,因为不需要手动编辑首选项文件。

我的工作区设置被存储在
~/.eclipse/org.eclipse.oomph.setup/setups/user.setup
中的用户特定设置所覆盖。具体地说,该文件包括以前安装中遗留的安装行:

<setupTask
      xsi:type="setup:PreferenceTask"
      key="/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.codegen.targetPlatform"
      value="9"/>
  <setupTask
      xsi:type="setup:PreferenceTask"
      key="/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.compliance"
      value="9"/>
  <setupTask
      xsi:type="setup:PreferenceTask"
      key="/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.source"
      value="9"/>
</setupTask>

解决方案:
~/.eclipse/org.eclipse.oomph.setup/setups/user.setup
中删除上面的行

注意:
感谢@skomisa帮我解决了这个问题

为什么不在项目级别设置它呢?更改
首选项
应该记住Eclipse重启之间的值。如果没有发生这种情况,可能Eclipse在保存工作区设置时遇到了问题。您在哪里创建了工作区?希望不要在Windows上的
程序文件
程序数据
中,因为这通常受UAC保护。我可以使用Oxygen.2重现问题,但无论是在Oxygen.3a中,还是最近的光子里程碑中。您使用的是哪个版本?与Stephan一样,我也无法使用Oxygen.3a版本(4.7.3a)重现此问题,因此如果您使用的是较早的版本,只需升级即可解决问题(如果这是一个可用的选项)。@ShaunDashjian也许您可以创建一个新的工作区并创建两个虚拟项目,并查看新工作区是否仍然存在法规遵从性问题。如果法规遵从性适用于该新工作区(即,您的设置在重新启动时仍然有效),则您将问题隔离到一个特定的工作区。值得一试,因为它只需要几分钟…这在我的机器上不起作用。我将用Eclipse提出一个bug报告。到底是什么“不起作用”?假设您能够编辑org.eclipse.jdt.core.prefs,那么在编辑该文件并启动eclipse之后,您仍然可以看到合规级别为9的旧/默认设置吗?如果是这样,对org.eclipse.jdt.core.prefs的更改是否也会被删除?如果是这样的话,那么一个bug报告显然是合适的。我将文件编辑为1.8,但是当我打开Eclipse时,文件内容和UI都恢复为9。该文件在启动时显然被Eclipse覆盖了。您是否可能在启动时使用Oomph(可能是在不知不觉中),这就是为什么您对org.Eclipse.jdt.core.prefs所做的更改会自动回归的原因?有关更多信息,请参阅SO post Eclipse Java templates reset on restart。答案的结尾解释了如何确定启动时是否使用了Oomph。该死!就这样。它总是从
~/.eclipse/org.eclipse.oomph.setup/setups/user.setup
获取设置,而不是写入工作区中的任何内容。