Class JniTerminalProvider
- java.lang.Object
-
- org.jline.terminal.impl.jni.JniTerminalProvider
-
- All Implemented Interfaces:
org.jline.terminal.spi.TerminalProvider
public class JniTerminalProvider extends java.lang.Object implements org.jline.terminal.spi.TerminalProviderTerminal provider implementation that uses JNI (Java Native Interface) to access native terminal functionality.This provider requires the JLine native library to be loaded, which is handled by
JLineNativeLoader. The native library provides access to low-level terminal operations that are not available through standard Java APIs.The native library is automatically loaded when this provider is used. If the library cannot be loaded, the provider will not be available and JLine will fall back to other available providers.
The native library loading can be configured using system properties as documented in
JLineNativeLoader.- See Also:
JLineNativeLoader,TerminalBuilder
-
-
Constructor Summary
Constructors Constructor Description JniTerminalProvider()Creates a new JNI terminal provider instance and ensures the native library is loaded.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description org.jline.terminal.spi.Ptycurrent(org.jline.terminal.spi.SystemStream systemStream)intgetConsoleCodepage()booleanisPosixSystemStream(org.jline.terminal.spi.SystemStream stream)booleanisSystemStream(org.jline.terminal.spi.SystemStream stream)booleanisWindowsSystemStream(org.jline.terminal.spi.SystemStream stream)java.lang.Stringname()org.jline.terminal.TerminalnewTerminal(java.lang.String name, java.lang.String type, java.io.InputStream in, java.io.OutputStream out, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.Attributes attributes, org.jline.terminal.Size size)Deprecated.org.jline.terminal.TerminalnewTerminal(java.lang.String name, java.lang.String type, java.io.InputStream in, java.io.OutputStream out, java.nio.charset.Charset encoding, java.nio.charset.Charset inputEncoding, java.nio.charset.Charset outputEncoding, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.Attributes attributes, org.jline.terminal.Size size)org.jline.terminal.spi.Ptyopen(org.jline.terminal.Attributes attributes, org.jline.terminal.Size size)org.jline.terminal.TerminalposixSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream)org.jline.terminal.TerminalposixSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream)java.lang.StringsystemStreamName(org.jline.terminal.spi.SystemStream stream)intsystemStreamWidth(org.jline.terminal.spi.SystemStream stream)org.jline.terminal.TerminalsysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset inputEncoding, java.nio.charset.Charset outputEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream)org.jline.terminal.TerminalsysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream)Deprecated.java.lang.StringtoString()org.jline.terminal.TerminalwinSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream)org.jline.terminal.TerminalwinSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream)
-
-
-
Constructor Detail
-
JniTerminalProvider
public JniTerminalProvider()
Creates a new JNI terminal provider instance and ensures the native library is loaded.The constructor first checks that native access is enabled for this module. On JDK 22+, calling
System.load()without--enable-native-accessproduces a warning (JDK 24+) or throwsIllegalCallerException(JDK 26+). By checking upfront, this provider fails cleanly and allowsTerminalBuilderto fall back to other providers.- Throws:
java.lang.UnsupportedOperationException- if native access is not enabled for this module
-
-
Method Detail
-
name
public java.lang.String name()
- Specified by:
namein interfaceorg.jline.terminal.spi.TerminalProvider
-
getConsoleCodepage
public int getConsoleCodepage()
- Specified by:
getConsoleCodepagein interfaceorg.jline.terminal.spi.TerminalProvider
-
current
public org.jline.terminal.spi.Pty current(org.jline.terminal.spi.SystemStream systemStream) throws java.io.IOException- Throws:
java.io.IOException
-
open
public org.jline.terminal.spi.Pty open(org.jline.terminal.Attributes attributes, org.jline.terminal.Size size) throws java.io.IOException- Throws:
java.io.IOException
-
sysTerminal
public org.jline.terminal.Terminal sysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset inputEncoding, java.nio.charset.Charset outputEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws java.io.IOException- Specified by:
sysTerminalin interfaceorg.jline.terminal.spi.TerminalProvider- Throws:
java.io.IOException
-
sysTerminal
@Deprecated public org.jline.terminal.Terminal sysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws java.io.IOExceptionDeprecated.- Specified by:
sysTerminalin interfaceorg.jline.terminal.spi.TerminalProvider- Throws:
java.io.IOException
-
winSysTerminal
public org.jline.terminal.Terminal winSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws java.io.IOException- Throws:
java.io.IOException
-
winSysTerminal
public org.jline.terminal.Terminal winSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws java.io.IOException- Throws:
java.io.IOException
-
posixSysTerminal
public org.jline.terminal.Terminal posixSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws java.io.IOException- Throws:
java.io.IOException
-
posixSysTerminal
public org.jline.terminal.Terminal posixSysTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, boolean nativeSignals, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.spi.SystemStream systemStream) throws java.io.IOException- Throws:
java.io.IOException
-
newTerminal
public org.jline.terminal.Terminal newTerminal(java.lang.String name, java.lang.String type, java.io.InputStream in, java.io.OutputStream out, java.nio.charset.Charset encoding, java.nio.charset.Charset inputEncoding, java.nio.charset.Charset outputEncoding, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.Attributes attributes, org.jline.terminal.Size size) throws java.io.IOException- Specified by:
newTerminalin interfaceorg.jline.terminal.spi.TerminalProvider- Throws:
java.io.IOException
-
newTerminal
@Deprecated public org.jline.terminal.Terminal newTerminal(java.lang.String name, java.lang.String type, java.io.InputStream in, java.io.OutputStream out, java.nio.charset.Charset encoding, java.nio.charset.Charset stdinEncoding, java.nio.charset.Charset stdoutEncoding, java.nio.charset.Charset stderrEncoding, org.jline.terminal.Terminal.SignalHandler signalHandler, boolean paused, org.jline.terminal.Attributes attributes, org.jline.terminal.Size size) throws java.io.IOExceptionDeprecated.- Specified by:
newTerminalin interfaceorg.jline.terminal.spi.TerminalProvider- Throws:
java.io.IOException
-
isSystemStream
public boolean isSystemStream(org.jline.terminal.spi.SystemStream stream)
- Specified by:
isSystemStreamin interfaceorg.jline.terminal.spi.TerminalProvider
-
isWindowsSystemStream
public boolean isWindowsSystemStream(org.jline.terminal.spi.SystemStream stream)
-
isPosixSystemStream
public boolean isPosixSystemStream(org.jline.terminal.spi.SystemStream stream)
-
systemStreamName
public java.lang.String systemStreamName(org.jline.terminal.spi.SystemStream stream)
- Specified by:
systemStreamNamein interfaceorg.jline.terminal.spi.TerminalProvider
-
systemStreamWidth
public int systemStreamWidth(org.jline.terminal.spi.SystemStream stream)
- Specified by:
systemStreamWidthin interfaceorg.jline.terminal.spi.TerminalProvider
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-