1

次に例を示します。


import org.scala_tools.time.Imports._
...
val dt1 : DateTime = new DateTime ("2010-09-01T12:00Z")
val dt2 : DateTime = new DateTime ("2010-10-01T12:10Z")
println (dt1 < dt2) // This is the Main.scala:48 line mentioned in the stack trace below
...

コンパイルして実行すると、


java.lang.NoClassDefFoundError: scala/Ordered
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at org.scala_tools.time.JodaImplicits$class.RichReadableInstant(Implicits.scala:70)
    at org.scala_tools.time.Imports$.RichReadableInstant(Imports.scala:20)
    at myproject.Main$.main(Main.scala:48)
...

理由は何で、これを修正する方法は何ですか?

私はすべて(joda-time、SBT、Scala、SUN JVM)の最新の安定版リリースを使用しています(joda-timeを除く-最新のスナップショットバージョンを使用しています)。

4

2 に答える 2

5

どのScalaバージョンを使用していますか?joda-timeラッパーが同じScalaバージョンでコンパイルされていることを確認してください。

現在のドキュメントを確認すると、Orderedがscala.mathに属していることがわかりました。Scalaがありました。注文しましたが、2.8より前でした。正確には、まだscala.Ordered-2つがあります。1つはvalで、もう1つは型エイリアスであり、どちらもパッケージオブジェクトscalaで定義されています。

正しいjoda-timeラッパーはhttp://www.scala-tools.org/repo-releases/org/scala-tools/time/time_2.8.0/0.2/にあるようですが、それは純粋な推測です。

于 2010-10-27T04:37:25.847 に答える
4

ScalaライブラリのクラスのClassNotFoundエラーは、ほとんどの場合、バージョンの不一致が原因で発生します。

独自のプロジェクトのクラスの一部が古いバージョンのScalaでコンパイルされているか(この場合、クリーンビルドを実行する必要があります)、または古いバージョンでコンパイルされたバージョンのscala-tools/timeを使用しています。 Scalaの。

于 2010-10-27T08:52:02.667 に答える