- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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 时打印 Activity 代码页是罪魁祸首。例如,尝试运行 cmd.exe
并查看是否得到类似的输出:
Microsoft Windows [Version 10.0.17763.253]
(c) 2018 Microsoft Corporation. All rights reserved.
Active code page: 65001
这在写了一行代码如 import 语句或上述打印 hello world 的情况后崩溃。 JShell 显然期待其他东西。
Activity 代码页的额外输出似乎也甩开了很多其他解析器。我实际上是通过一个不同的异常遇到这个问题的,该异常发生在运行 mvn release
时。事实证明,Maven 的发布插件对 cmd.exe
进行了大量 shell 处理并尝试解析输出。这会产生像这样的有趣异常:
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)
解决方案
我必须通过运行 chcp 65001
命令的 regedit
禁用 AutoRun
。这可以在以下任一路径中找到:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
以下 SO 答案将提供更多相关信息,并且是该问题的最终答案: https://stackoverflow.com/a/48203959/540873
注意 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)
关于java - Jshell 错误 : java. lang.NullPointerException: charsetName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900918/
我正在尝试创建自定义 JShell 提示符并希望直接从文件加载它。 但是当从文件加载设置提示时它没有显示自定义提示,但我能够在 JShell 上编写相同的命令。 例如:我有一个文件“jshell_pr
从 jShell 脚本内部,是否可以访问或注册在创建 JShell 的代码中定义的变量? 目前似乎没有机制可以访问或注册一个变量到 Shell 实例,或者从 JShell 内部返回无字符串类型(如对象
从 jShell 脚本内部,是否可以访问或注册在创建 JShell 的代码中定义的变量? 目前似乎没有机制可以访问或向 Shell 实例注册变量,或者从 JShell 内部返回任何字符串类型(如对象或
我已经下载并“手动”安装了适用于 Linux 64 位版本的 JDK 10(适用于 Ubuntu 16.04), Oracle Java SE Development Kit(注意:我想下载 Java
我正在使用 JDK9 的 jshell。 我刚刚创建了一个最终变量并为其分配了一个值。 在下一行中,我只是修改了值。令我惊讶的是,修改最终变量时没有错误。 以下是代码片段: jshell> final
我是 java 9 的新手,只是在 jshell 上练习一些代码片段 jshell> System.out.println("hello"); hello jshell> System.out.
有人知道 JShell 历史记录存储在哪里(Windows-10 上的 Java-11/Open JDK,但任何配置都可能有用)?我一直在$HOME($USERPROFILE,$APPDATA,...
我想像这样运行 jshell $ jshell --execute 'System.out.println("Hello World")' Hello World $ 因此它执行 java 单行代码并
我看了几个 JShell 教程,但我仍然不明白最重要的部分:我为什么要使用 JShell? 甲骨文是这样说的: "You can test individual statements, try out
tl;dr:如何在不替换此类的情况下向现有类添加方法? 描述: 当我在 JShell 中运行以下命令时: public class TestClass {} 打印出以下输出: created clas
如何在 JShell 中查找变量或表达式结果的类型。 在 Java 中试验按位运算符 jshell> byte b=5 5 -2147483648 jshell> 有没有像 Python type(5
我在我的机器上使用 'jshell 命令,它无法被识别。但是 java 命令工作正常。 jdk 10 中的jshell 是否有任何环境设置 C:\Users\Kannan λ jshell 'jshe
当我在 JShell (9.0.1) 中输入一个表达式时,它返回: $22 -> 22 从哪里来,$1 到 $21 发生了什么? (它们是未定义的。) 我似乎隐约记得(当我开始使用 Java 9.0
我找到了 this问题,这个 other ,如此有趣以至于引出了几个问题,至少对我而言: 相当开放式的问题,但是 jshell 被限制 在哪里?显然,GUI 应用程序不属于 jshell 解决方案或
如何指示 jshell 在脚本末尾终止,类似于其他语言的解释器,例如 python3 或 node? 以下命令 ./jshell -q /tmp/shell.java 带有脚本/tmp/shell.j
我该怎么做 /exit jshell具有非零错误代码的 session ? /exit产量:进程完成,退出代码 0 /exit 1产量:进程完成,退出代码 0 throw new Error("1")
我正在发现 JShell,并且发现默认添加的导入: jshell> /imports | import java.io.* | import java.math.* | import
为什么我的 jshell 实例(JDK 版本 9-ea)无法识别 printf() 语句?以下是我观察到的错误, jshell> printf("Print number one - %d",1) |
关注帖子Is there a way to remove imports in JShell? .我想知道是否还有办法摆脱默认导入。 jshell> /imports | import java
根据文档, There’s also the option to load a script on startup, including some special predefined options
我是一名优秀的程序员,十分优秀!