无法 运行 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 中。
这给您留下了两个可行的选择:
- 删除 NetBeans 11.0 的所有用户首选项文件。
- 在整个文件夹中搜索
\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 安装中找到首选项文件并将其删除,尽管这似乎是一种不令人满意的方法,即使它有效。
几个相关点:
- 看到 NetBeans window 在消失之前短暂出现通常是将 netbeans_jdkhome 设置为无效 JDK 路径的症状,但在你的情况下,这个值看起来不错。
- JAVA_HOME 被 NetBeans 忽略,因此这不是您问题的原因。有关 NetBeans 如何决定使用哪个 JDK 的详细信息,请参阅对 Bug 198950 - NetBeans should use the JAVA_HOME and JDK_HOME environment variables, if available, to determine which JDK to use 的响应。在启动 NetBeans 时指定 --jdkhome 参数将覆盖其他所有内容。
IllegalArgumentException
仅在 JDK 版本 >= 9 时出现,因为 JDK 错误修复,但这是一件好事。有关详细信息,请参阅 JDK-8075156 : (prefs) get*() and remove() should disallow the use of the null control character '\u0000' as key。您没有遇到 NetBeans 8.x 的问题,因为您可能从未导入过任何首选项文件,但即使您是 IllegalArgumentException
也不会因为 Java 错误而发生由 JDK-8075156 修复。
无论我做什么,我都无法让 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 中。
这给您留下了两个可行的选择:
- 删除 NetBeans 11.0 的所有用户首选项文件。
- 在整个文件夹中搜索
\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 安装中找到首选项文件并将其删除,尽管这似乎是一种不令人满意的方法,即使它有效。
几个相关点:
- 看到 NetBeans window 在消失之前短暂出现通常是将 netbeans_jdkhome 设置为无效 JDK 路径的症状,但在你的情况下,这个值看起来不错。
- JAVA_HOME 被 NetBeans 忽略,因此这不是您问题的原因。有关 NetBeans 如何决定使用哪个 JDK 的详细信息,请参阅对 Bug 198950 - NetBeans should use the JAVA_HOME and JDK_HOME environment variables, if available, to determine which JDK to use 的响应。在启动 NetBeans 时指定 --jdkhome 参数将覆盖其他所有内容。
IllegalArgumentException
仅在 JDK 版本 >= 9 时出现,因为 JDK 错误修复,但这是一件好事。有关详细信息,请参阅 JDK-8075156 : (prefs) get*() and remove() should disallow the use of the null control character '\u0000' as key。您没有遇到 NetBeans 8.x 的问题,因为您可能从未导入过任何首选项文件,但即使您是IllegalArgumentException
也不会因为 Java 错误而发生由 JDK-8075156 修复。