Я разрабатываю приложение на основе JLine, которое я, очевидно, хотел бы протестировать по мере разработки.
JLine — это удобная библиотека, которая предоставляет интерактивную консольную функциональность приложениям JVM.
JLine не работает в консоли Intellij, вероятно, потому, что они присвоили клавишу табуляции для своих гнусных нужд, и я хочу протестировать завершение табуляции, потому что я реализую некоторые команды, завершаемые табуляцией.
Я захожу в консоль SBT и пытаюсь выполнить run-main Example simple
, но выбрасываю исключение, потому что теперь в загрузчике классов есть две библиотеки jline — моя и та, которую использует SBT, поэтому приложение взрывается при загрузке библиотеки JLine (синглтоны — это зло). ...
Вздох... Немного поковырявшись в консоли 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))
Я знаю, что могу разобрать этот список, очевидно, что пробелы или запятые были бы вполне жизнеспособным разделителем, но разработчики Scala, похоже, не подключены таким образом...
Но 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 банок в пути к классам (небольшое преувеличение), какие-либо предложения?