apache / maven-mvnd

Apache Maven Daemon
https://maven.apache.org/
Apache License 2.0
2.85k stars 205 forks source link

Add the JLine diagnosis tool to the command line in the native client #1033

Closed gnodet closed 2 weeks ago

gnodet commented 2 weeks ago

Provide easier diagnosis for #1032 .

gnodet commented 2 weeks ago

This gives the following:

C:\Users\gnodet\mvnd>Z:\Downloads\maven-mvnd-1.0.1-SNAPSHOT-windows-amd64\bin\mvnd --diag
System properties
=================
os.name =         Windows 10
OSTYPE =          null
MSYSTEM =         null
PWD =             null
ConEmuPID =       null
WSL_DISTRO_NAME = null
WSL_INTEROP =     null

OSUtils
=================
IS_WINDOWS = true
IS_CYGWIN =  false
IS_MSYSTEM = false
IS_WSL =     false
IS_WSL1 =    false
IS_WSL2 =    false
IS_CONEMU =  false
IS_OSX =     false

FFM Support
=================
FFM support not available: java.io.IOException: Unable to load terminal provider ffm: org.jline.terminal.impl.ffm.FfmTerminalProvider

JnaSupport
=================
JNA support not available: java.io.IOException: Unable to find terminal provider jna

Jansi2Support
=================
Jansi 2 support not available: java.io.IOException: Unable to find terminal provider jansi

JniSupport
=================
StdIn stream =    false
StdOut stream =   false
StdErr stream =   false
Unable to check stream names: java.lang.UnsatisfiedLinkError: org.jline.nativ.CLibrary.init()V [symbol: Java_org_jline_nativ_CLibrary_init or Java_org_jline_nativ_CLibrary_init__]
Unable to open terminal: java.lang.NoClassDefFoundError: Could not initialize class org.jline.terminal.impl.jni.win.NativeWinSysTerminal
java.lang.NoClassDefFoundError: Could not initialize class org.jline.terminal.impl.jni.win.NativeWinSysTerminal
        at org.jline.terminal.impl.jni.JniTerminalProvider.winSysTerminal(JniTerminalProvider.java:98)
        at org.jline.terminal.impl.jni.JniTerminalProvider.sysTerminal(JniTerminalProvider.java:80)
        at org.jline.terminal.impl.Diag.testProvider(Diag.java:121)
        at org.jline.terminal.impl.Diag.diag(Diag.java:89)
        at org.mvndaemon.mvnd.client.DefaultClient.main(DefaultClient.java:90)

Exec Support
=================
StdIn stream =    false
StdOut stream =   false
StdErr stream =   false
StdIn stream name =     null
StdOut stream name =    null
StdErr stream name =    null
Not supported by provider
cstamas commented 2 weeks ago

Just FTR, if anyone wants to help: no need to build locally, as binaries (all of them, not only win) are built by CI: https://github.com/apache/maven-mvnd/actions/runs/9566585526?pr=1033

gnodet commented 2 weeks ago

The stack trace is trimmed by the diag tool:

java.io.IOException: Unable to load terminal provider ffm: null
    at org.jline.terminal.spi.TerminalProvider.load(TerminalProvider.java:71)
    at org.jline.terminal.impl.Diag.diag(Diag.java:58)
    at org.mvndaemon.mvnd.client.DefaultClient.main(DefaultClient.java:90)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:292)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:208)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
    at org.jline.terminal.spi.TerminalProvider.load(TerminalProvider.java:69)
    ... 8 more
Caused by: java.lang.UnsupportedOperationException: Native access is not enabled for the current module: unnamed module @3fb4f649
    at org.jline.terminal.impl.ffm.FfmTerminalProvider.<init>(FfmTerminalProvider.java:37)
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
    ... 11 more
gnodet commented 2 weeks ago

I have the following on windows + native client:

JniSupport
=================
StdIn stream =    false
StdOut stream =   false
StdErr stream =   false
Unable to check stream names: java.lang.UnsatisfiedLinkError: org.jline.nativ.CLibrary.init()V [symbol: Java_org_jline_nativ_CLibrary_init or Java_org_jline_nativ_CLibrary_init__]
Unable to open terminal: java.lang.NoClassDefFoundError: Could not initialize class org.jline.terminal.impl.jni.win.NativeWinSysTerminal
java.lang.NoClassDefFoundError: Could not initialize class org.jline.terminal.impl.jni.win.NativeWinSysTerminal
        at org.jline.terminal.impl.jni.JniTerminalProvider.winSysTerminal(JniTerminalProvider.java:98)
        at org.jline.terminal.impl.jni.JniTerminalProvider.sysTerminal(JniTerminalProvider.java:80)
        at org.jline.terminal.impl.Diag.testProvider(Diag.java:121)
        at org.jline.terminal.impl.Diag.diag(Diag.java:89)
        at org.mvndaemon.mvnd.client.DefaultClient.main(DefaultClient.java:90)
cstamas commented 2 weeks ago

Closing this PR as contents have been moved to branch in this repo: https://github.com/apache/maven-mvnd/tree/fix-win-terminal