首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用JDK 11运行11

无法使用JDK 11运行11
EN

Stack Overflow用户
提问于 2019-07-17 21:14:48
回答 1查看 1.9K关注 0票数 3

不管我做什么,我都不能让Netbeans 11和JDK 11一起工作,你能帮我吗?

请注意,JDK 8没有出现此问题。

下载并安装JDK 11到C:\Program \Java\JDK-11.0.4

下载并解压缩Netbeans 11到C:\Program \netbeans

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

netbeans_jdkhome="C:\Program \Java\JDK-11.0.4“

当尝试运行bin/netbeans64.exe时:

第一次:加载窗口出现,加载一点,然后整个程序消失。 第二次:加载窗口不出现。出现一个空的Java应用程序。 如果我转到任务管理器并手动结束Netbeans进程,我可以回到第一次。

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

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

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

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

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

更新与解决方案

多亏了斯库米萨提供的答案,我终于开始工作了。

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

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

C:\Users\Hunter\AppData\Roaming\NetBeans\11.0\

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

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

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

从零开始移除整个文件夹似乎更容易,也更令人满意。这样,我所有的用户偏好文件都使用了JDK和Netbeans接受的最新实践,希望下次更新时不会有遗留代码随机中断。

谢谢大家的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-18 02:51:24

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

这是以前报告过的错误,但仍未解决。见Bug 271652 - IllegalArgumentException: Key包含代码点U+0000

您的首选项文件都是XML文件(扩展名为xml),位于C:\user\user下的各种目录中。

在我的例子中,我对NetBeans 11的唯一首选文件是名为NetBeans,但您可能有多个。

从控制台日志中的堆栈跟踪中,失败的调用是AbstractPreferences.getBoolean(),因此null可能位于首选项文件中包含Boolean的一行中。但是,因为这与此相关,所以答案表明只是盲目地从所有首选项文件中删除所有空值。无论如何,任何XML文件中都不应该存在Nulls。

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

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

以下几个相关问题:

  • netbeans_jdkhome窗口消失之前,查看NetBeans窗口通常是将NetBeans设置为无效JDK路径的一种症状,但在您的示例中,该值看起来很好。
  • JAVA_HOME被NetBeans忽略,所以这不可能是问题的原因。有关家庭环境变量(如果可用的话)来确定要使用哪个JDK如何决定使用哪个JDK的详细信息,请参阅对NetBeans的响应。在启动时指定NetBeans --jdkhome参数将覆盖其他所有内容。
  • IllegalArgumentException只出现在JDK版本的>= 9中,这是因为JDK错误修复,但这是一件好事。详情请参见()和remove()应该不允许使用空控制字符'\u0000‘作为键。。NetBeans 8.x没有出现问题,因为您可能从未导入任何首选项文件,但是即使您是,IllegalArgumentException也不会因为JDK-8075156修复的Java而发生。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57084144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档