Jshell错误:java.lang.NullPointerException:charsetName

2024-04-18

我正在尝试使用 JDK11 提供的 JShell 来运行一些简单的命令。但是当我输入:

jshell>System.out.println("Hello World!");

它给了我错误:

Exception in thread "main" java.lang.NullPointerException: charsetName
        at java.base/java.lang.String.<init>(String.java:464)
        at java.base/java.lang.String.<init>(String.java:537)
        at jdk.internal.le/jdk.internal.jline.extra.AnsiInterpretingOutputStream.write(AnsiInterpretingOutputStream.java:92)
        at java.base/java.io.OutputStream.write(OutputStream.java:157)
        at java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233)
        at java.base/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:312)
        at java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:316)
        at java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:153)
        at java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:254)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.flush(ConsoleReader.java:1052)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.accept(ConsoleReader.java:2029)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2756)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2383)
        at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2371)
        at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.readLine(ConsoleIOContext.java:142)
        at jdk.jshell/jdk.internal.jshell.tool.JShellTool.getInput(JShellTool.java:1261)
        at jdk.jshell/jdk.internal.jshell.tool.JShellTool.run(JShellTool.java:1174)
        at jdk.jshell/jdk.internal.jshell.tool.JShellTool.start(JShellTool.java:975)
        at jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder.start(JShellToolBuilder.java:254)
        at jdk.jshell/jdk.internal.jshell.tool.JShellToolProvider.main(JShellToolProvider.java:120)

然后结束JShell程序。

我的java版本如下:

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

事实证明,罪魁祸首是生成新 CMD 时打印活动代码页。例如,尝试运行cmd.exe看看是否得到类似的输出:

Microsoft Windows [Version 10.0.17763.253]
(c) 2018 Microsoft Corporation. All rights reserved.
Active code page: 65001

在编写一行代码(例如 import 语句或上面打印 hello world 的情况)后,会崩溃。 JShell 显然期望的是其他东西。

活动代码页的附加输出似乎也抛弃了许多其他解析器。实际上,我通过运行时发生的不同异常遇到了这个问题mvn release。事实证明,Maven 的发布插件重磅推出cmd.exe并尝试解析输出。这会产生如下有趣的异常:

Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 6: Active%20code%20page:%2065001
C:/Users/USER_NAME/git/SOME_PROJECT
    at java.net.URI$Parser.fail (URI.java:2915)
    at java.net.URI$Parser.checkChars (URI.java:3086)
    at java.net.URI$Parser.parse (URI.java:3112)
    at java.net.URI.<init> (URI.java:600)
    at java.net.URI.create (URI.java:881)
    at org.apache.maven.scm.provider.git.gitexe.command.status.GitStatusConsumer.resolveURI (GitStatusConsumer.java:249)

Solution

我不得不禁用AutoRun via regedit运行的chcp 65001命令。 这可以在以下任一路径中找到:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

以下 SO 答案将提供有关此问题的更多信息,并且是此问题的最终答案:https://stackoverflow.com/a/48203959/540873 https://stackoverflow.com/a/48203959/540873

Note这也可能发生在任何其他命令中AutoRun那将会ECHO某事,就我而言,这只是chcp命令。


Java版本供参考:

java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jshell错误:java.lang.NullPointerException:charsetName 的相关文章

随机推荐

  • 如何在 RMarkdown 中渲染 wordcloud2 的输出

    我怎样才能确保输出wordcloud2 wordcloud2 出现在我的 RMarkdown HTML 文档中 它在 RStudio 中渲染得很好 包括在 RMarkdown 文档的预览中 但是当我使用 blogdown 将其上传到我的 n
  • MySql 将值从一行复制到另一行

    这应该是非常基本的 但我无法弄清楚 有一个表 值 entity attribute value frank shirt red frank hat green sam shirt blue sam hat orange 我如何将同一个人的所
  • .Net Framework dll 不适用于 .Net Standard 项目

    我已经参考了 Net框架 ddl to Net标准2 0 它会向我显示以下错误 System Reflection ReflectionTypeLoadException Unable to load one or more of the
  • 复选框值始终为“打开”[重复]

    这个问题在这里已经有答案了 这是我的复选框 HTML
  • C# - 转换日期时间格式 yyyy-MM-dd [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试将日期时间格式从 dd M
  • nock 库 - 如何匹配任何 url

    嗨 我正在尝试箭库 https github com flatiron nock blob master README md但正在努力匹配查询字符串上的随机模式 我认为类似下面的代码应该可以工作 但我无法让任何东西工作 var nock r
  • 在pandas中读取csv时自动确定标题行

    我正在尝试从共享相同列名称的不同 csv 文件收集数据 但是 某些 csv 文件的标题位于不同的行中 有没有办法根据包含 大多数 值 实际标题名称 的第一行动态确定标题行 我尝试了以下方法 def process file file pat
  • 没有单位的行高的缺点?

    在没有单位的情况下指定行高是否有任何缺点 浏览器 设备不一致 Example body line height 1 5 在大多数情况下 使用无单位行高实际上更好 请参阅 http meyerweb com eric thoughts 200
  • JSHint 和 eclipse 插件

    所以我刚刚在 Eclipse Kepler 中安装了 JSHint 我加载了 jshintrc 文件 如何在我的 javascript 文件上运行 jshint 我没有看到菜单项 也没有看到指定文件名等的地方 有人可以帮忙吗 添加后 jsh
  • 任意预设精度小数(几乎像 BigDecimal)

    我正在寻找一个 java 类 它将保存具有任意预设精度的十进制值 班上BigDecimal看起来是一个很好的起点 但我希望能够将小数的大小限制为最终用户决定的大小 从字面上讲 最终用户将指定一个以 10 为基数的范围 我将分配足够的字节来表
  • 如何使用 open() 函数清除 .txt 文件?

    我有一个简单的程序 可以打开文件并替换文本 但是 我希望程序清除文件 然后保存需要保存的内容 我怎么做 或者有更简单的方法吗 如果您使用模式打开文件w如果文件已经存在 它将覆盖该文件 with open your file w as f f
  • 加载内核模块时出现未知符号

    我需要帮助理解为什么在插入模块时出现错误 我努力了this http www linuxforums org forum kernel 56497 unkown symbol module error while insmodding bu
  • spring jar bootRun 导致 GraphQL Schema 错误

    当我使用 gradle 构建 Spring Boot 应用程序时bootRun or build然后运行输出 jar 我从控制台日志中得到以下大量错误列表 2018 03 18 00 49 38 754 ERROR 228 main o s
  • Qt 自定义外观和感觉?

    我可以强制我的 Qt 应用程序使用不同的外观和感觉 就像在 KDE 中一样吗 您始终可以使用 QApplication setStyle 更改小部件的样式 Qt4 中有一些预定义的选项可用 在 main cpp 中做这样的事情 includ
  • 如何使用 ggplot2 面颜色和形状?

    也许 我错过了 ggplot 语法中的一些内容 可以毫无错误地绘制以下 3 个方面 不幸的是 面图混合了颜色和形状 右侧一栏应仅显示蓝色标记 而中间一栏应显示绿色标记 data1 num delay claim supply project
  • 错误:输入文件并非全部位于同一目录中,请提供显式 wd

    在尝试构建一个大约两周前工作的 PDF 后 没有大惊小怪 在一台全新安装了 R R studio 的新机器上 bookdown等等 我有这个错误 Error Input files not all in same directory ple
  • Laravel 迁移更改列的默认值

    我有一个已分配默认值的表 例如 我们可以看看以下内容 Schema create users function Blueprint table table gt increments id gt unsigned table gt inte
  • 子元素悬停时的 CSS 过渡

    当子元素的父元素悬停在其上方时 我试图暂停子元素的显示 Html span div This Is The Child div Some Text in the span span Css span position relative sp
  • 如何在 php 脚本仍在运行时显示结果

    所以我尝试过在脚本仍在执行时显示结果 https stackoverflow com questions 5415665 show results while script is still executing 但由于某种原因它不起作用 所
  • Jshell错误:java.lang.NullPointerException:charsetName

    我正在尝试使用 JDK11 提供的 JShell 来运行一些简单的命令 但是当我输入 jshell gt System out println Hello World 它给了我错误 Exception in thread main java