PaperMC / PaperMC/Paper

Dum terminal in intellij

Open
#2,712 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

status: accepted type: bug
Dominant language
Java
Stars
12.7k
Forks
3.5k
Avg merge
3d 13h
Merged PRs (30d)
11

Description

What behaviour is expected:

Proper terminal

What behaviour is observed:

dum terminal

Steps/models to reproduce:

Run paperclip in intellij (tested in 2019.3 ultimate on java 13, 11 and 8 on win10)

Plugin list:

not relevant

Paper build number:

231 (and 652 for 1.13)

Anything else:

not sure if this is a paper or a TCA issue, but I am pretty sure that I got the proper terminal in other applications that use TCA just fine so I am assuming something is wrong on papers end.

I saw #2257 and #2299, thats why I tested it in 1.14 again, but it doesnt work either:

System Info: Java 13 (OpenJDK 64-Bit Server VM 13+33) Host:  Windows 10 10.0 (amd64)
Loading libraries, please wait...
java.lang.IllegalStateException: Unable to create a system terminal
	at org.jline.terminal.TerminalBuilder.doBuild(TerminalBuilder.java:313)
	at org.jline.terminal.TerminalBuilder.build(TerminalBuilder.java:259)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.initializeTerminal(TerminalConsoleAppender.java:231)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.<init>(TerminalConsoleAppender.java:205)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.createAppender(TerminalConsoleAppender.java:312)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:132)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
	at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
	at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.<clinit>(IAsyncTaskHandler.java:15)
	at org.bukkit.craftbukkit.Main.main(Main.java:243)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at io.papermc.paperclip.Paperclip.main(Paperclip.java:54)
	Suppressed: java.util.NoSuchElementException
		at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1309)
		at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1297)
		at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1395)
		at org.jline.terminal.TerminalBuilder.load(TerminalBuilder.java:462)
		at org.jline.terminal.TerminalBuilder.doBuild(TerminalBuilder.java:337)
		... 32 more
 
                                                                                                                 
		at org.jline.terminal.impl.jansi.win.JansiWinSysTerminal.createTerminal(JansiWinSysTerminal.java:48)
		at org.jline.terminal.impl.jansi.JansiSupportImpl.winSysTerminal(JansiSupportImpl.java:129)
		at org.jline.terminal.TerminalBuilder.doBuild(TerminalBuilder.java:345)
		... 32 more
2019-11-30 20:37:45,437 main WARN Advanced terminal features are not available in this environment

exceptions in full (1.13 tho)

System Info: Java 13 (OpenJDK 64-Bit Server VM 13+33) Host:  Windows 10 10.0 (amd64)
Loading libraries, please wait...
JNA
com.sun.jna.LastErrorException: [6] The handle is invalid.
	at com.sun.jna.Native.invokeVoid(Native Method)
	at com.sun.jna.Function.invoke(Function.java:408)
	at com.sun.jna.Function.invoke(Function.java:354)
	at com.sun.jna.Library$Handler.invoke(Library.java:244)
	at org.jline.terminal.impl.jna.win.$Proxy18.GetConsoleMode(Unknown Source)
	at org.jline.terminal.impl.jna.win.JnaWinSysTerminal.createTerminal(JnaWinSysTerminal.java:41)
	at org.jline.terminal.impl.jna.JnaSupportImpl.winSysTerminal(JnaSupportImpl.java:31)
	at org.jline.terminal.TerminalBuilder.doBuild(TerminalBuilder.java:340)
	at org.jline.terminal.TerminalBuilder.build(TerminalBuilder.java:262)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.initializeTerminal(TerminalConsoleAppender.java:234)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.<init>(TerminalConsoleAppender.java:208)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.createAppender(TerminalConsoleAppender.java:315)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:132)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
	at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
	at net.minecraft.server.v1_13_R2.MinecraftServer.<clinit>(MinecraftServer.java:72)
	at org.bukkit.craftbukkit.Main.main(Main.java:243)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at io.papermc.paperclip.Paperclip.main(Paperclip.java:54)
JANSI
java.util.NoSuchElementException
	at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1309)
	at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1297)
	at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1395)
	at org.jline.terminal.TerminalBuilder.load(TerminalBuilder.java:465)
	at org.jline.terminal.TerminalBuilder.doBuild(TerminalBuilder.java:348)
	at org.jline.terminal.TerminalBuilder.build(TerminalBuilder.java:262)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.initializeTerminal(TerminalConsoleAppender.java:234)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.<init>(TerminalConsoleAppender.java:208)
	at net.minecrell.terminalconsole.TerminalConsoleAppender.createAppender(TerminalConsoleAppender.java:315)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:132)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
	at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
	at net.minecraft.server.v1_13_R2.MinecraftServer.<clinit>(MinecraftServer.java:72)
	at org.bukkit.craftbukkit.Main.main(Main.java:243)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at io.papermc.paperclip.Paperclip.main(Paperclip.java:54)
2019-11-30 20:40:55,646 main WARN Disabling terminal, you're running in an unsupported environment.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at io.papermc.paperclip.Paperclip.main and follow the stack trace into net.minecrell.terminalconsole.TerminalConsoleAppender.initializeTerminal, focusing on the JLine terminal creation failures under IntelliJ on Windows. Reproduce with the stated Java versions and Paper builds; done means Paper provides a proper terminal instead of disabling terminal support.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.