带有 Ubuntu16 和 Java 8 的 Payara 5.194 因 JLine 抛出的 UnsupportedOperationException 而失败

Payara 5.194 with Ubuntu16 and Java 8 failing with UnsupportedOperationException thrown from JLine

鉴于:

A clean Ubuntu 16 安装了 java 和 clean Payara:

jdk-8u241-linux-x64.tar.gz
payara-5.194.zip

时间:

./asadmin start-domain

然后:产生此输出:

Exception in thread "main" java.io.IOError: java.lang.UnsupportedOperationException
    at org.jline.utils.Curses.tputs(Curses.java:62)
    at org.jline.utils.Curses.tputs(Curses.java:45)
    at org.jline.keymap.KeyMap.key(KeyMap.java:243)
    at org.jline.reader.impl.LineReaderImpl.key(LineReaderImpl.java:5784)
    at java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:193)
    at java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:175)
    at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at org.jline.reader.impl.LineReaderImpl.bindKeys(LineReaderImpl.java:5792)
    at org.jline.reader.impl.LineReaderImpl.emacs(LineReaderImpl.java:5503)
    at org.jline.reader.impl.LineReaderImpl.defaultKeyMaps(LineReaderImpl.java:5479)
    at org.jline.reader.impl.LineReaderImpl.<init>(LineReaderImpl.java:277)
    at org.jline.reader.LineReaderBuilder.build(LineReaderBuilder.java:115)
    at com.sun.enterprise.admin.cli.CLICommand.buildLineReader(CLICommand.java:1445)
    at com.sun.enterprise.admin.cli.CLICommand.prevalidate(CLICommand.java:941)
    at com.sun.enterprise.admin.cli.CLICommand.execute(CLICommand.java:325)
    at com.sun.enterprise.admin.cli.AdminMain.executeCommand(AdminMain.java:360)
    at com.sun.enterprise.admin.cli.AdminMain.doMain(AdminMain.java:294)
    at org.glassfish.admin.cli.AsadminMain.main(AsadminMain.java:56)
Caused by: java.lang.UnsupportedOperationException
    at org.jline.utils.Curses.doTputs(Curses.java:78)
    at org.jline.utils.Curses.tputs(Curses.java:60)
    ... 23 more

在接下来的几个月里,我们将无法升级 Ubuntu:(

我认为最新版本的 jline 引起了问题;有谁知道如何解决这个问题?

您看到的行为是由于 JLine 库中的一个错误。

参考这里:need support securtCRT terminal types - Linux and Fails with an UnsupportedOperationException by jline 3.10 and 3.11.0

根据针对 Apache Karaf (KARAF-6341) 报告的另一个问题,它似乎是由设置 TERM=linux.

引起的

因此,作为解决方法,您可以发出命令

export TERM=xterm

在 shell 中并从 shell 开始 Payara。