4

編集:

2013年1月27日現在のバージョン情報:

Scala 2.10.0
IntelliJ IDEA Leda 123.139(EAP)
Scalaプラグインバージョン0.7.108(ナイトリービルド)
JDK 7u11 Joda
Time 2.1
ScalaJ-Time 2.9.1-0.6

SBTでの作業に進展が見られなかったため、SBTでの作業をあきらめました。IntelliJSBTを組み合わせる方法がわかりません。何時間も試した後、最初に始めたところに行き着きました。 。

私のJodaTimeライブラリにはScalaj-Timejarが含まれています。

ジョイントコンパイル(最初にScala、次にJavaとvv)外部ビルドから、依存関係のScalaライブラリ上にJodaTimeライブラリを持ち上げるまで(はい、私もそうしました)、設定のほぼすべての組み合わせを試しました。キャッシュを無効にします。プロジェクトを「作成」するか、現在のファイルを「実行」するか、「コンパイル」するかに関係なく、ランダムに生成される一連のエラーだけが発生します。そして、時々、それは機能します。はい、それはばかげているように聞こえますが、動作は未定義です。何が原因なのかわかりません。表示される3つの異なるエラーメッセージを数えました。それらをpastie.orgにアップロードします。そうしないと、スペースがかかりすぎます:http://pastie。

私が試したことのないこと:上記のアプリ/ライブラリの以前のリリースに戻って、 SBT深く入り込んでください(私はそれが価値がないと思った)。

このスレッドに何を期待しますか?私は誰かがこの問題に対する固溶体を提供することを期待していますが、最良の場合、SBT(オプション)についての言及は含まれていません。

また、補足として、 Joda-Timeがライブラリを壊れた形式で出荷するのはなぜですか?この背後にある、誰もが知っておくべき秘密はありますか?FromStringリリースバージョンに含めることの問題は何でしたか?(私はまだそれがすべての原因だと思います)

よろしく、
ダニエル

元の投稿:(これは無視してかまいません)

IntelliJの最新ビルド(123.139)であるScala 2.10.0を使用していますが、これまでのところ問題は発生していません。

Javaタイムライブラリを使用する代わりに、私はJoda Timeを使用したいと思っていました。そして、Scalaで使用する暗黙の要素がたくさんあるのを見て、それを試してみたかったのです。すべてのライブラリを追加しましたが、暗黙的に認識されませんでした。IDEAポップアップメニューからコンパイルしようとすると、次のエラーが表示されました。

error while loading DateTime, class file '~\workspace\Libraries\JodaTime\joda-time-2.1.jar(org/joda/time/DateTime.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 10 at byte 42)
error while loading DateTimeZone, class file '~\workspace\Libraries\JodaTime\joda-time-2.1.jar(org/joda/time/DateTimeZone.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 7 at byte 44)
error while loading AbstractInstant, class file '~\workspace\Libraries\JodaTime\joda-time-2.1.jar(org/joda/time/base/AbstractInstant.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 10 at byte 10)

それらのソースにアクセスして、インポートされていることにDateTime気付きorg.joda.convert.FromString;ましたが、リソースが存在しませんでした。Scalaがコンパイルされなかったのはそのためだと思いました。だから私は自分が何をすべきかをググった。そしてどこでも「SBT、SBT !!」と書かれていて、このSBTが何であるかを調べようとしていたので、 http:// wwwからバージョン0.12.2、手動インストール(Windows 7を使用)をインストールしました。 .scala-sbt.org/。IntelliJで実行したかったので、に移動し、その行を~\.sbt\plugins含むファイルを作成し、https://github.com/mpeltonen/sbt-ideaからzipをダウンロードして抽出し、CMDを使用してそのフォルダーに移動しました。 、入力してbuild.sbtaddSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.2.0")sbtgen-ideasbt内で、それは多くのことを行い、すべてがうまくいったように見えました。そこで、Joda Timeを実行したいプロジェクトに行きました。まず、Scala2.10.0をSBTに含めるのは非常に難しいようでした。ファイルを作成し、<PROJECT>\build.sbt次の行を入力しました。

name := "Project"

version := "1.0"

scalaHome := Some(file("C:/Program Files (x86)/scala"))

scalaVersion := "2.10.0"

次に、scalaj-timeを含めるために、行に移動し<PROJECT>\project\project\て作成build.sbtしましたlibraryDependencies += "org.scalaj" %% "scalaj-time" % "0.6"

最後に、CMDで<PROJECT>に行き、「sbt」と入力すると、多くのファイルが(ダウンロード)ロードされ、うまくいったように見えたので、入力gen-ideaすると、すべて問題ありませんでした。

IntelliJを開いて、プロジェクトを簡単に開くことができました。Project Structureを開いたとき、Modulesに移動しましたが、2つのモジュールがありました:ProjectProject-build。Project-buildを無視し、Projectモジュールをクリックすると、存在しないソースフォルダーとテストフォルダーがたくさんありました。たとえばsrc/main/scala、それらをすべて削除してsrc、ソースフォルダーとして追加しました。

Joda-Timeが外部ライブラリに含まれていないことに気づきました(ところで、私はJoda-Time2.1とScalaj-time0.6を使用しています)ので、自分で追加する必要がありました。joda-timeライブラリは.jarであり、scalaj-timeはフォルダですが、問題ありませんよね?簡単なprintln( DateTime.now )命令を実行することはできましたが(以前は可能かどうかはわかりませんが、試しませんでした)、+ 2.monthsそれでも不可能でした。これがスクリーンショットですので、あなたはアイデアを得ることができます:

私がどのように進んだかを非常に詳細に説明したと思います。私が間違ったことを見つけていただければ幸いです。私はこれを解決するために何時間も働いてきました、しかし結局、私は最初にいたところに着陸しました...

お時間をいただきありがとうございます!

よろしく!

4

2 に答える 2

4

joda-timeのFromStringをインポートする方法は?

これは魅力のように機能しました(今のところ、物事がどのように続くかを知っている人)。私はとても怒っているので、そもそもこれについて考えていませんでした...Grrrrr。

于 2013-01-27T21:39:09.770 に答える
2

編集:

この答えは無効です。メインの投稿の編集を参照してください。これは時々機能しますが、いつ機能するかについてはまだかなり定義されていません。新しいプロジェクトを作成すると、動作するものから動作しないもの(コンパイルしない、ランダムエラーを出力する)までさまざまですが、別の大きなプロジェクトでは、(何らかの理由で)動作しないことを除いて、同じ未定義の動作がありました。限目。(新しく作成したプロジェクトでは、まだ異なります)

元の投稿

それで、さらに10分間試してグーグルした後、Scalaj-time(0.6)の.JARを見つけました。

私は「まあ、それはどんな害をもたらすことができますか?」のようで、それをダウンロードして、フォルダの代わりにそれを含めました。

Tadaaa、すべてがうまくいきました...私も必要だったのはこれらの行だけでした:

object Test extends App {
    import org.scala_tools.time.Imports._
    println( DateTime.now + 2.months )
}

SBTも、何も、他の輸入品も一切ありません。http://mvnrepository.com/artifact/org.scalaj/scalaj-time_2.9.1 (現在のバージョン0.6)とJoda Time(V 2.1)からscalaj_timeをダウンロードし、2つ以上のjarファイルを含むライブラリScalajTimeを作成します。それを依存関係に追加します。必要なのは、その1つのインポートステートメントだけで、準備は完了です。

おそらく主な問題は、ライブラリからSOURCEファイルをインポートできないことでしたか?インポートしたソースフォルダはまったく影響がないようだったからです。その事実をどのように「無視」したのかはわかりませんが、推測するのはばかげているように見えました。

だから、今それは動作します。

よろしく。

于 2013-01-26T13:11:20.833 に答える