17

Mac でマウンテン ライオンと Java 7 を使用して Play 2.2.0 アプリを起動すると問題が発生します。

[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関連のものをすべて削除し、 https://github.com/paulp/sbt-extras/blob/master/sbtからsbtスクリプトを使用しようとしました->同じ問題
  • アイビーレポディレクトリからすべてのjarファイルを削除し、sbtを再開しました->同じ問題
  • sbt ランチャーを直接ダウンロード (バージョン 0.13.0) -> 同じ問題
  • Java 6で試した - >同じ問題
  • sbtをデバッグして何が問題なのかを調べようとしましたが、jlineがUnixTerminalを使用する必要があることを認識していないことがわかりました(systemPropertiesを設定することで機能しました)が、再び->同じエラー

使用する端末のクラスバージョンが古いように見えるため、奇妙なリンクに何らかの関係があると思います。少なくともこれは、jvm が不平を言っていることです。

ubuntuの仮想ボックスで試してみましたが、正常に機能したので、システムが混乱しているか、完全に間違っていると思います。

誰かアイデアはありますか?

4

4 に答える 4

8

詳細なクラスの読み込みを有効にして JVM を起動すると ( -verbose:class)、問題のある JLine クラスがどこから来ているのかをトラブルシューティングするのに役立つ場合があります。おそらく、JVM 拡張ディレクトリの 1 つに JLine jar があると思われ~/Library/Java/Extensionsます/System/Library/Java/Extensions

于 2013-10-19T15:07:20.200 に答える
1

SBT のバージョンを 0.13 に更新してみてください。sbt tar ファイルをダウンロードして、.bash_profile ファイルのパスを変更するだけです。プロジェクト ディレクトリで sbt コマンドを再実行してください。これで問題は解決するはずです。

于 2015-04-17T23:25:11.870 に答える
1

このエラーは、エラー メッセージで示唆されているように、SBT 0.13 プロジェクトで 0.12 の SBT ランチャーを使用した場合にも発生する可能性があります。

于 2013-11-26T21:38:07.050 に答える