无论我做什么,我都无法让Netbeans 11与JDK 11一起使用。您能帮我吗?
请注意,JDK 8不会发生此问题。
将JDK 11下载并安装到C:\ Program Files \ 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时:
第一次:出现加载窗口,加载一会儿,然后 整个程序消失了。
第二次:不出现“正在加载”窗口。空的Java应用程序 出现。
如果我转到任务管理器并手动结束Netbeans进程,则可以 回到第一次。
有关下面列出的附件,请参考我在此处创建的问题: https://issues.apache.org/jira/browse/NETBEANS-2865
从PowerShell执行netbeans64.exe会将错误消息输出到控制台。可以在consoleOutput.txt附件中找到它们。
在netbeans.log附件中可以找到执行bin / netbeans64.exe --trace C:\ 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 \ 11.0 \
Skomisa的答案提到了尝试创建新的NetBeans 11解压缩版本并且不导入设置。实际上,我之前曾尝试过此操作,但从未看到弹出窗口询问您是否要导入。我认为这是因为此版本的NetBeans的用户首选项文件已经创建,并且仍位于AppData中。
这为您提供了两个可行的选择:
\u0000
的实例并将其删除。 删除整个文件夹并从头开始似乎更容易也更令人满意。这样,我所有的用户首选项文件都使用了JDK和Netbeans接受的最新实践,并且希望没有挥之不去的遗留代码会在我下次更新时随机中断。
感谢大家的帮助!
答案 0 :(得分:2)
您的问题似乎与错误报告的控制台日志输出中的IllegalArgumentException
(“ 键包含代码点U + 0000 ”)有关。看来NetBeans正在尝试从早期版本的Netbeans中导入您的首选项,并且正在您的首选项文件中发现一些无效的空字符。
此错误先前已报告过,但仍未解决。参见Bug 271652 - IllegalArgumentException: Key contains code point U+0000。
您的首选项文件都是XML文件(扩展名为 xml ),并且位于 C:\ Users \ user ID \ AppData \ Roaming \ NetBeans \ 11.0 \ config < / strong>。
在我的情况下,我唯一的NetBeans 11首选项文件名为 C:\ Users \ johndoe \ AppData \ Roaming \ NetBeans \ 11.0 \ config \ Editors \ text \ x-java \ Preferences \ org-netbeans-modules -editor-settings-CustomPreferences.xml ,但您可能有多个。
从控制台日志中的堆栈跟踪中,失败的调用是AbstractPreferences.getBoolean()
,因此在您的首选项文件中包含Boolean
的行上可能为null。但是,as this somewhat related SO answer suggests仅从所有首选项文件中盲目删除所有null。无论如何,在任何XML文件中都不应该存在空值。
解决问题的另一种方法是创建新的NetBeans 11解压缩版本,但不导入设置。
我想您甚至可以在现有的(破损的)NB 11安装中找到首选项文件并删除它们,尽管即使可行,这似乎也不令人满意。
一些相关点:
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
也不会发生,这是由于JDK-8075156修复了Java错误。