当前位置: 首页 > 知识库问答 >
问题:

NoClassDefoundError使用来自Java的Scala类

从光启
2023-03-14
class Person {
  def getName() = "Daniel Spiewak"
}
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

知道我做错了什么吗?

共有1个答案

耿玄裳
2023-03-14

您需要包含Scala运行库才能使用Scala类。这是编译器警告和运行时错误的原因。

试试这个

 java -cp .:scala-library.jar Test

(jar文件的名称可能不同,但重点是将其添加到您的类路径中)。

 类似资料:
  • 问题内容: 我需要使用某些Java类中包含的逻辑。我找到了JNI,但该项目似乎最近没有更新。 有没有办法在Delphi本机应用程序中使用它?我使用Delphi 2009。 问题答案: 比JNI更新的解决方案是JNA,它还支持(Delphi)DLL的回调。我发现它易于使用。

  • 我试图用Scala打印MongoDB查询的结果 尝试使用以下方法手动打印: 产生了以下信息: 信息:ReadPreferenceServerSelector{ReadPreference=Primary}没有从群集描述中选择服务器ClusterDescription{type=Unknown,ConnectionMode=Single,ServerDescriptions=[ServerDescr

  • 简短版: 如何创建 中等待,并在两者之间等待,直到结果可用。同样,我不知道如何在不阻塞线程的情况下进入< code>wait? 简而言之,我正在尝试构建一个系统,该系统正在进行大量的SOAP Web服务调用,其中每个调用都会阻塞很长时间。在大量并发 Web 服务调用的情况下,系统可能很容易耗尽线程。我正在努力寻找一种基于非阻塞I / O的解决方案,该解决方案可以同时允许许多正在进行的Web服务调用

  • 我试图使用Kotlin+IntelliJ学习一些spring的基础知识,但我遇到了一些麻烦。@RequestMapping带注释的方法(带有参数)会导致异常,而Java等效方法工作得非常好。Kotlin代码工作良好,但只是没有“processFormTwo”方法(将工作的Java代码转换为Kotlin也没有帮助)。 servletException:servlet调度器的servlet.init(

  • 我有一个对象,我想将其转换为

  • 问题内容: 我正在尝试从JNI层了解如何使用。为了理解,我构建了一个非常简单的示例: 然后从本地JNI层: 如果我使用openjdk在此处(debian / linux wheezy amd64)运行此示例: 这是我看到的: 我了解索引2和3的值。但是所有其他值对我来说都没有任何意义,我原本希望这样: 我从JNI的ByteBuffer使用中误解了什么? 问题答案: 我从文档中错过的是默认情况下实际