私は Scala の経験がないので、この質問は初歩的なものかもしれません。このチュートリアルの「Person」の例に基づいて、Java 内から Scala クラスを使用しようとしています。
次のように、Scala と Java の 2 つのソース ファイルを作成します。
Person.scala:
class Person {
def getName() = "Daniel Spiewak"
}
テスト.java:
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.getName();
}
}
コンパイルはできますが (理解できない警告が表示されます)、プログラムを実行しようとすると ClassNotFoundException が発生します。
$ scalac Person.scala $ javac Test.java ./Person.class: 警告: タイプ 'ScalaSignature' にアノテーション メソッド 'bytes()' が見つかりません: scala.reflect.ScalaSignature のクラス ファイルが見つかりません 1 件の警告 $ java テスト スレッド「メイン」の例外 java.lang.NoClassDefFoundError: scala/ScalaObject java.lang.ClassLoader.defineClass1(ネイティブメソッド)で java.lang.ClassLoader.defineClass(ClassLoader.java:787) で java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) で java.net.URLClassLoader.defineClass(URLClassLoader.java:447) で java.net.URLClassLoader.access$100 (URLClassLoader.java:71) で java.net.URLClassLoader$1.run(URLClassLoader.java:361) で java.net.URLClassLoader$1.run(URLClassLoader.java:355) で java.security.AccessController.doPrivileged(ネイティブメソッド)で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang.ClassLoader.loadClass(ClassLoader.java:423) で sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) で java.lang.ClassLoader.loadClass(ClassLoader.java:356) で Test.main(Test.java:3) で 原因: java.lang.ClassNotFoundException: scala.ScalaObject java.net.URLClassLoader$1.run(URLClassLoader.java:366) で java.net.URLClassLoader$1.run(URLClassLoader.java:355) で java.security.AccessController.doPrivileged(ネイティブメソッド)で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang.ClassLoader.loadClass(ClassLoader.java:423) で sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) で java.lang.ClassLoader.loadClass(ClassLoader.java:356) で ... 13以上
私が間違っていることは何か分かりますか?