我正在開發基於JLine的應用程序,我顯然希望在開發時測試它。如何執行SBT託管的JLine類
JLine是一個方便的庫,它爲JVM應用程序提供交互式控制檯功能。
JLine無法在Intellij控制檯中工作,可能是因爲他們已經爲他們自己的惡意需求佔用了Tab鍵,而我想測試的是Tab-Completion,因爲我正在實現一些Tab完成的命令。
我放到SBT控制檯,並嘗試run-main Example simple
,但我拋出一個異常,因爲現在類加載器中有兩個jline庫 - 我的一個和SBT使用的,所以應用程序在加載JLine庫時爆炸(Singletons是邪惡的)....
唉...在SBT控制檯有點擺弄一下,並發現我可以運行:
> show runtime:managed-classpath
[info] List(Attributed(/home/bryan/.sbt/boot/scala-2.10.0/lib/scala-library.jar), Attributed(/home/bryan/.ivy2/cache/org.parboiled/parboiled-scala_2.10/bundles/parboiled-scala_2.10-1.1.5.jar), Attributed(/home/bryan/.ivy2/cache/org.parboiled/parboiled-core/bundles/parboiled-core-1.1.5.jar), Attributed(/home/bryan/.ivy2/cache/jline/jline/jars/jline-2.10.jar))
我知道我可以分析該名單,顯然空格或逗號將是一個完全可行的分隔符,但斯卡拉開發人員似乎並沒有這樣連線...
但SBT似乎只當我來解析該命令在它的控制檯,如果我從實際,UNIX,控制檯執行該命令,就像這樣:
% sbt show runtime:managed-classpath
[info] Loading project definition from /common/moon_excel/project
[info] Set current project to moon_excel (in build file:/common/moon_excel/)
[error] Not a valid command: show (similar: shell)
[error] Expected whitespace character
[error] Expected '/'
[error] Expected ':'
[error] Not a valid key: show (similar: show-timing)
[error] show
我想這個過程自動化因爲當我在班級路徑上有100個罐子時(有點誇張),有什麼建議嗎?
嗨馬克,感謝您的詳細回覆。我沒有真正運行測試,這是爲了運行主類(它使用jline輸入)。無論如何,偉大的迴應,thx! – irishjava