NoClassDefFoundError使用Scala类从Java
发布时间:2020-12-14 06:01:21 所属栏目:Java 来源:网络整理
导读:我没有 Scala的经验,所以这个问题可能是基本的.根据本教程中的“Person”示例,我正在使用 Java内的Scala类: http://www.codecommit.com/blog/java/interop-between-java-and-scala 我创建两个源文件,一个Scala和一个Java,如下所示. Person.scala: class Pe
我没有
Scala的经验,所以这个问题可能是基本的.根据本教程中的“Person”示例,我正在使用
Java内的Scala类:
http://www.codecommit.com/blog/java/interop-between-java-and-scala
我创建两个源文件,一个Scala和一个Java,如下所示. Person.scala: class Person { def getName() = "Daniel Spiewak" } Test.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: warning: Cannot find annotation method 'bytes()' in type 'ScalaSignature': class file for scala.reflect.ScalaSignature not found 1 warning $java Test Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:787) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:447) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at Test.main(Test.java:3) Caused by: java.lang.ClassNotFoundException: scala.ScalaObject at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 13 more 任何想法我在做错什么? 解决方法
您需要包括Scala运行时库才能使用Scala类.这是在运行时编译器警告和错误的原因.
尝试这个 java -cp .:scala-library.jar Test (jar文件的名称可能不同,但重点是将其添加到您的类路径). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |