Sbt 0.13.0 Неисправность JLine обнаружена
У меня есть проблема с запуском приложения 2.2.0 для игры на моем mac с горным львом и java 7:
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
at jline.TerminalFactory.get(TerminalFactory.java:159)
at sbt.ConsoleLogger$.ansiSupported(ConsoleLogger.scala:85)
at sbt.ConsoleLogger$.<init>(ConsoleLogger.scala:79)
at sbt.ConsoleLogger$.<clinit>(ConsoleLogger.scala)
at sbt.GlobalLogging$.initial(GlobalLogging.scala:40)
at sbt.StandardMain$.initialGlobalLogging(Main.scala:54)
at sbt.StandardMain$.initialState(Main.scala:60)
at sbt.xMain.run(Main.scala:26)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:57)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:77)
at xsbt.boot.Launch$.run(Launch.scala:57)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:45)
at xsbt.boot.Launch$.launch(Launch.scala:65)
at xsbt.boot.Launch$.apply(Launch.scala:16)
at xsbt.boot.Boot$.runImpl(Boot.scala:32)
at xsbt.boot.Boot$.main(Boot.scala:21)
at xsbt.boot.Boot.main(Boot.scala)
java.lang.IncompatibleClassChangeError: JLine incompatibility detected. Check that the sbt launcher is version 0.13.x or later.
at sbt.ConsoleLogger$.ansiSupported(ConsoleLogger.scala:96)
at sbt.ConsoleLogger$.<init>(ConsoleLogger.scala:79)
at sbt.ConsoleLogger$.<clinit>(ConsoleLogger.scala)
at sbt.GlobalLogging$.initial(GlobalLogging.scala:40)
at sbt.StandardMain$.initialGlobalLogging(Main.scala:54)
at sbt.StandardMain$.initialState(Main.scala:60)
at sbt.xMain.run(Main.scala:26)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:57)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:77)
at xsbt.boot.Launch$.run(Launch.scala:57)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:45)
at xsbt.boot.Launch$.launch(Launch.scala:65)
at xsbt.boot.Launch$.apply(Launch.scala:16)
at xsbt.boot.Boot$.runImpl(Boot.scala:32)
at xsbt.boot.Boot$.main(Boot.scala:21)
at xsbt.boot.Boot.main(Boot.scala)
Error during sbt execution: java.lang.IncompatibleClassChangeError: JLine incompatibility detected. Check that the sbt launcher is version 0.13.x or later.
На самом деле это не связано с игрой, так как я получил ту же ошибку, когда начинаю напрямую sbt в этом каталоге.
Поэтому я попробовал пару вещей:
- удалил все связанные с sbt вещи из моего домашнего каталога и попытался использовать sbt script из https://github.com/paulp/sbt-extras/blob/master/sbt → той же проблемы
- удалил все банки из моего репо-сервера плюща и начал снова sbt → та же проблема
- скачать sbt launcher напрямую (версия 0.13.0) → та же проблема
- попробовал с java 6 → той же проблемой
- пытался отладить sbt, чтобы выяснить, что неправильно, но все, что я узнал, это то, что jline не признает, что он должен использовать UnixTerminal (который я получил, установив systemProperties), но затем снова → ту же ошибку
Это как-то связано с какой-то странной связью, о которой я думаю, потому что версия класса для терминала, которая должна использоваться, кажется старой. По крайней мере, это то, о чем жалуется jvm.
Я попробовал это на виртуальной коробке с ubuntu, которая работала нормально, поэтому я думаю, что моя система беспорядок или я сделал что-то совершенно неправильное.
У кого-нибудь есть идеи?
Ответы
Ответ 1
Если вы запускаете JVM с включенной расширенной загрузкой классов (-verbose:class
), это может помочь устранить неполадку, из которой происходят классы, вызывающие нарушение JLine. Возможно, у вас есть JLine jar в одном из ваших каталогов расширений JVM, возможно, ~/Library/Java/Extensions
или /System/Library/Java/Extensions
.
Ответ 2
У меня была такая же проблема. Мой проект использует SBT 0.13
Оказалось, что мне нужно обновить SBT Launcher до версии 0.13.
Ответ 3
Эта ошибка также может произойти, если вы используете пусковую установку SBT от 0.12 в проекте SBT 0.13, как это предлагается в сообщении об ошибке.
Ответ 4
Попробуйте обновить версию SBT до 0,13. Просто загрузите файл tar sbt и измените путь в файле .bash_profile. Попробуйте снова запустить команду sbt в каталоге проекта. Это должно решить проблему.