jline/jline3


JLine is a Java library for handling console input. https://jline.org

Download


Step 1. Add the JitPack repository to your build file

Add it in your root settings.gradle at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url 'https://jitpack.io' }
		}
	}

Add it in your settings.gradle.kts at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url = uri("https://jitpack.io") }
		}
	}

Add to pom.xml

	<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>

Add it in your build.sbt at the end of resolvers:

 
    resolvers += "jitpack" at "https://jitpack.io"
        
    

Add it in your project.clj at the end of repositories:

 
    :repositories [["jitpack" "https://jitpack.io"]]
        
    
	dependencies {
		implementation 'com.github.jline:jline3:jline-3.28.0'
	}
	dependencies {
		implementation("com.github.jline:jline3:jline-3.28.0")
	}
	<dependency>
	    <groupId>com.github.jline</groupId>
	    <artifactId>jline3</artifactId>
	    <version>jline-3.28.0</version>
	</dependency>

                            
    libraryDependencies += "com.github.jline" % "jline3" % "jline-3.28.0"
        
        

                            
    :dependencies [[com.github.jline/jline3 "jline-3.28.0"]]
        
        

Readme


JLine - Java Console Library

Maven Central Build Status License

JLine is a Java library for handling console input. It's similar to GNU Readline but with a focus on portability, flexibility, and integration with Java applications. See https://jline.org for its documentation.

Features

  • Cross-platform support: Works on Windows, macOS, Linux, and other Unix-like systems
  • Line editing: Emacs and Vi editing modes with customizable key bindings
  • History management: Persistent command history with search capabilities
  • Tab completion: Customizable completion for commands, arguments, and file paths
  • Syntax highlighting: Colorize input based on custom rules
  • Password masking: Secure input for sensitive information
  • ANSI terminal support: Full support for ANSI escape sequences and colors
  • Unicode support: Proper handling of wide characters and combining marks
  • ConsoleUI components: Interactive UI elements like menus, checkboxes, and prompts

Installation

Maven

<dependency>
    <groupId>org.jline</groupId>
    <artifactId>jline</artifactId>
    <version>3.30.0</version>
</dependency>

Gradle

implementation 'org.jline:jline:3.30.0'

Quick Start

Here's a simple example to get you started:

import org.jline.reader.*;
import org.jline.reader.impl.*;
import org.jline.terminal.*;
import org.jline.terminal.impl.*;

public class HelloJLine {
    public static void main(String[] args) {
        try {
            // Create a terminal
            Terminal terminal = TerminalBuilder.builder()
                    .system(true)
                    .build();

            // Create line reader
            LineReader reader = LineReaderBuilder.builder()
                    .terminal(terminal)
                    .build();

            // Prompt and read input
            String line = reader.readLine("JLine > ");

            // Print the result
            System.out.println("You entered: " + line);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Modules

JLine is organized into several modules:

  • jline-terminal: Core terminal functionality
  • jline-reader: Line editing and reading
  • jline-console: Higher-level console abstractions
  • jline-console-ui: Interactive UI components (checkboxes, lists, etc.)
  • jline-style: Styling and coloring support
  • jline-builtins: Built-in commands and utilities
  • jline-remote-ssh: SSH server support
  • jline-remote-telnet: Telnet server support

Documentation

License

JLine is licensed under the BSD License.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.