无法 运行 Apache Netbeans 11 使用 JDK 11

Cannot run Apache Netbeans 11 using JDK 11

无论我做什么,我都无法让 Netbeans 11 与 JDK 11 一起工作。你能帮帮我吗?

请注意,JDK 8.

不会出现此问题

下载并安装JDK11到C:\ProgramFiles\Java\jdk-11.0.4

已下载 Netbeans 11 并将其解压缩到 C:\Program Files\netbeans

已编辑 etc/netbeans.conf 文件以设置 JDK 主页:

netbeans_jdkhome="C:\Program Files\Java\jdk-11.0.4"

当尝试 运行 bin/netbeans64.exe:

First time: The loading window appears, loads for a bit, and then the whole program disappears.

Second time: Loading window does not appear. An empty Java application appears.

If I go to Task Manager and manually end the Netbeans process, I can get back to First time.

下面列出的附件,请参考我在这里创建的问题: https://issues.apache.org/jira/browse/NETBEANS-2865

从 PowerShell 执行 netbeans64.exe 会向控制台输出错误消息。它们可以在 consoleOutput.txt 附件中找到。

执行bin/netbeans64.exe --trace C:\netbeans.log的结果可以在netbeans.log附件中找到。

作为参考,这是我遵循的教程:

https://www.youtube.com/watch?v=cxh-hVty09g

更新与解决方案

感谢 skomisa 提供的答案,我终于让它工作了。

此问题是由 Netbeans 11.0 从以前版本导入设置引起的。我第一次 运行 Netbeans 11.0 时有一个弹出窗口询问我是否要从以前的版本导入我的设置。有关原因的更多详细信息,请参阅 skomisa 的回答。

为了解决这个问题,我删除了 AppData 中的整个文件夹,从而删除了 NetBeans 11 的所有首选项文件。

C:\Users\Hunter\AppData\Roaming\NetBeans.0\

Skomisa 的回答提到尝试创建一个新的解压缩版本的 NetBeans 11 而不是导入设置。我以前确实试过这个,但从来没有弹出 window 询问你是否要导入。我认为这是因为此版本的 NetBeans 的用户首选项文件已经创建并且仍在 AppData 中。

这给您留下了两个可行的选择:

  1. 删除 NetBeans 11.0 的所有用户首选项文件。
  2. 在整个文件夹中搜索 \u0000 的实例并将其删除。

删除整个文件夹并从头开始似乎更容易和更令人满意。这样一来,我所有的用户首选项文件都使用了 JDK 和 Netbeans 接受的最新做法,并且希望没有挥之不去的遗留代码 运行domly 在我下次更新时中断。

感谢大家的帮助!

您的问题似乎与错误报告的控制台日志输出中的 IllegalArgumentException(“密钥包含代码点 U+0000”)有关。 NetBeans 似乎正在尝试从较早版本的 Netbeans 中导入您的首选项,并且在您的首选项文件中发现了一些无效的空字符。

之前已报告过此错误,但仍未解决。参见 Bug 271652 - IllegalArgumentException: Key contains code point U+0000

您的首选项文件都是 XML 文件(扩展名为 xml),位于 C:\Users\user ID\AppData\Roaming\NetBeans.0\config.

在我的例子中,我唯一的 NetBeans 11 首选项文件名为 C:\Users\johndoe\AppData\Roaming\NetBeans.0\config\Editors\text\x-java\Preferences\org-netbeans-modules-editor-settings-CustomPreferences.xml 但你可能有不止一个。

根据控制台日志中的堆栈跟踪,失败的调用是 AbstractPreferences.getBoolean(),因此 null 可能位于首选项文件中包含 Boolean 的行上。但是,as this somewhat related SO answer suggests,只是盲目地从所有首选项文件中删除所有空值。任何 XML 文件中都不应存在空值。

解决您的问题的另一种方法是创建一个新的解压缩版本的 NetBeans 11,但不要导入您的设置。

我想您甚至可以在现有的(损坏的)NB 11 安装中找到首选项文件并将其删除,尽管这似乎是一种不令人满意的方法,即使它有效。

几个相关点: