`
sswh
  • 浏览: 164070 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

jline 在Eclipse下的运行问题

 
阅读更多

最近用到karaf,而karaf的控制台使用了jline处理控制台输入。

在Eclipse下运行时,控制台无法接受输入,输入命令、回车,系统没反应。

 

原因是在通过JNI调用本地WindowsAPI时,本地的private static final native int ReadConsoleInputW()方法返回了非预期的值。导致控制台读取部分实际上处于死循环状态。

 

解决方法:设置系统属性jline.WindowsTerminal.directConsole为false。

(绕过本地库Windows API调用,直接使用Java IO流读取输入)

主要参考了:http://whitesock.iteye.com/blog/692816

 

打开jline的日志:设置系统属性jline.internal.Log.debug为true

另外,要调试jline的话,几个依赖库:

<dependency>

<groupId>org.fusesource.hawtjni</groupId>

<artifactId>hawtjni-runtime</artifactId>

<version>1.11</version>

</dependency>

<dependency>

<groupId>org.fusesource.jansi</groupId>

<artifactId>jansi-native</artifactId>

<version>1.5</version>

</dependency>

<dependency>

<groupId>jline</groupId>

<artifactId>jline</artifactId>

<version>2.13</version>

</dependency>

 

调试代码:

public static void main(String[] args) throws Exception {

System.setProperty("jline.internal.Log.debug", "true");

//System.setProperty("jline.WindowsTerminal.directConsole", "false");

 

ConsoleReader console = new ConsoleReader();

String line = console.readLine();

System.out.println("----" + line);

}

 

 对于karaf shell中包含 more输出方式的命令,more的执行效果仍然有问题。

比如,对于help命令。(按每一个字母都分别输出了---more----)

可以修改etc\shell.init.script文件,修改其:

help = { *:help $args | more } ;  改为:

help = { *:help $args } ;

分享到:
评论

相关推荐

    Java 命令行交互输入库 JLine需要的jar包

    4. **多路复用器(Multiplexer)**:允许多个会话同时在一个控制台窗口中运行,这对于实现多进程或者多线程的命令行应用非常有用。 5. **颜色和格式化**:JLine支持输出彩色和格式化的文本,使命令行界面更加友好。...

    jline-2.12-API文档-中文版.zip

    赠送jar包:jline-2.12.jar; 赠送原API文档:jline-2.12-javadoc.jar; 赠送源代码:jline-2.12-sources.jar; 赠送Maven依赖信息文件:jline-2.12.pom; 包含翻译后的API文档:jline-2.12-javadoc-API文档-中文...

    jline-2.11-API文档-中文版.zip

    赠送jar包:jline-2.11.jar; 赠送原API文档:jline-2.11-javadoc.jar; 赠送源代码:jline-2.11-sources.jar; 赠送Maven依赖信息文件:jline-2.11.pom; 包含翻译后的API文档:jline-2.11-javadoc-API文档-中文...

    jline3, JLine是用于处理控制台输入的Java库.zip

    jline3, JLine是用于处理控制台输入的Java库 描述JLine是用于处理控制台输入的Java库。 it functionality editline和 GNU 类似,但是具有额外的特性,使之与 ZSH行编辑器 par 。 熟悉 readline/editline功能的现代 ...

    jline-2.9.1

    Hadoop2.6.0配合hive1.0.0版本,会报jline错误。原因是Hadoop/share/hadoop/yarn/lib中的jline是0.9版本的,存在问题。 换成jline-2.9.1版本,问题就可以解决了。就可以成功的使用hive了。

    jline-2.12-API文档-中英对照版.zip

    赠送jar包:jline-2.12.jar; 赠送原API文档:jline-2.12-javadoc.jar; 赠送源代码:jline-2.12-sources.jar; 赠送Maven依赖信息文件:jline-2.12.pom; 包含翻译后的API文档:jline-2.12-javadoc-API文档-中文...

    jline-2.11-API文档-中英对照版.zip

    赠送jar包:jline-2.11.jar; 赠送原API文档:jline-2.11-javadoc.jar; 赠送源代码:jline-2.11-sources.jar; 赠送Maven依赖信息文件:jline-2.11.pom; 包含翻译后的API文档:jline-2.11-javadoc-API文档-中文...

    jline3:JLine是一个用于处理控制台输入的Java库

    JLine JLine是一个用于处理控制台输入的Java库。 它的功能类似于和,但具有使其与同等的附加功能。... 依赖关系是最小的:您可以在不依赖* nix系统的情况下使用JLine,但是为了支持Windows或更高级的用法

    hadoop+hbase报错使用jar文件(jline-2.12.1.jar)

    jline版本低导致hbase启动失败,这里的jar文件完成升级。

    jline-0.9.94.jar

    使用zookeeper需要引入的jar包,有需要的下载使用吧~~

    jline2:杰琳2.x

    文献资料讨论区Maven用法使用以下定义在您的maven项目中使用JLine: &lt;dependency&gt; &lt;groupId&gt;jline&lt;/groupId&gt; &lt;artifactId&gt;jline&lt;/artifactId&gt; &lt;version&gt;2.14.2&lt;/version&gt;&lt;/dependency&gt;建造要求Maven 3+ Java 5+ 签出...

    jline-2.7.jar

    JLine jline/jline/2.7/jline-2.7.jar

    jline-2.14.jar

    JLine jline/jline/2.14/jline-2.14.jar

    jline-2.13.jar

    JLine jline/jline/2.13/jline-2.13.jar

    jline-2.14.1.jar

    JLine jline/jline/2.14.1/jline-2.14.1.jar

    jline-2.11.jar中文-英文对照文档.zip

    (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以...

    jline-2.9.jar

    JLine jline/jline/2.9/jline-2.9.jar

    jline-log4j2-appender:与 JLine ConsoleReader 正确互操作的 log4j2 控制台附加程序,以防止在命令提示符和 uesr 的输入之间插入日志消息

    例如,在运行一个需要用户频繁输入的脚本或者服务器控制台时,用户不再会因为日志输出而被打断,可以专注于自己的输入。这在开发复杂的系统管理工具或者自动化脚本时显得尤为重要。 在"jline-log4j2-appender-...

Global site tag (gtag.js) - Google Analytics