首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JShell在启动时抛出StringIndexOutOfBoundsException

JShell在启动时抛出StringIndexOutOfBoundsException
EN

Stack Overflow用户
提问于 2021-03-19 23:31:31
回答 1查看 140关注 0票数 0

我正在尝试在Debian 10 buster上启动一个jshell。我已经从Oracle下载了jdk-16_linux-x64_bin.tar.gz,并将其解压到我的home目录下的'jdk-16‘中。我已经设置了PATH和JAVA_HOME:

代码语言:javascript
运行
复制
~$ export PATH=~/jdk-16/bin:$PATH
~$ export JAVA_HOME=~/jdk-16
~$ javac --version
javac 16
~$ java --version
java 16 2021-03-16
Java(TM) SE Runtime Environment (build 16+36-2231)
Java HotSpot(TM) 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)

测试"Hello world“程序可以在此环境下成功编译和运行。然而,当我尝试运行jshell时,我得到了以下错误:

代码语言:javascript
运行
复制
~$ jshell
|  Welcome to JShell -- Version 16
|  For an introduction type: /help intro
Exception in thread "main" java.io.IOError: java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at jdk.internal.le/jdk.internal.org.jline.utils.Curses.tputs(Curses.java:62)
    at jdk.internal.le/jdk.internal.org.jline.utils.Curses.tputs(Curses.java:45)
    at jdk.internal.le/jdk.internal.org.jline.keymap.KeyMap.key(KeyMap.java:243)
    at jdk.internal.le/jdk.internal.org.jline.reader.impl.LineReaderImpl.key(LineReaderImpl.java:6095)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
    at jdk.internal.le/jdk.internal.org.jline.reader.impl.LineReaderImpl.bindKeys(LineReaderImpl.java:6103)
    at jdk.internal.le/jdk.internal.org.jline.reader.impl.LineReaderImpl.emacs(LineReaderImpl.java:5813)
    at jdk.internal.le/jdk.internal.org.jline.reader.impl.LineReaderImpl.defaultKeyMaps(LineReaderImpl.java:5789)
    at jdk.internal.le/jdk.internal.org.jline.reader.impl.LineReaderImpl.<init>(LineReaderImpl.java:293)
    at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext$2.<init>(ConsoleIOContext.java:133)
    at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.<init>(ConsoleIOContext.java:133)
    at jdk.jshell/jdk.internal.jshell.tool.JShellTool.start(JShellTool.java:978)
    at jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder.start(JShellToolBuilder.java:254)
    at jdk.jshell/jdk.internal.jshell.tool.JShellToolProvider.main(JShellToolProvider.java:120)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
    at java.base/java.lang.String.charAt(String.java:711)
    at jdk.internal.le/jdk.internal.org.jline.utils.Curses.doTputs(Curses.java:359)
    at jdk.internal.le/jdk.internal.org.jline.utils.Curses.tputs(Curses.java:60)
    ... 21 more

我也尝试过jdk-15.0.2,也有同样的结果。在~/jdk8中也安装了Java8JDK,但我不认为不同版本之间有任何冲突,因为PATH和JAVA_HOME设置正确。此错误的原因可能是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 23:43:30

原因是curses库不能正确初始化,因为我有一个“不寻常的”终端设置(我使用的是rxvt-unicode-256 could )。以下设置

代码语言:javascript
运行
复制
$ export TERM=xterm

已修复该错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66711104

复制
相关文章

相似问题

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