【问题标题】:Error when run scala jar运行scala jar时出错
【发布时间】:2011-09-16 04:37:54
【问题描述】:

当我运行 scala jar 时,它会抛出以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at com.ebay.twitch.Main.main(Main.scala)
Caused by: java.lang.ClassNotFoundException: scala.ScalaObject
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 13 more

但是我检查了我的 jar,scala-lang.jar 在 lib 文件夹中,所以它应该在类路径中。但是为什么这里找不到呢?

张杰

【问题讨论】:

  • 但是我使用 jar -xvf myjar.jar 来解压我的jar,并在lib文件夹中找到scala-library.jar
  • "... 并找到 scala-library.jar ..." 但您实际上在类路径中有它吗?即,您是否在清单文件中设置了适当的密钥? Java VM 不会自动开始使用 JAR,只是因为它包含在存储在另一个 JAR 中的某个子文件夹中。你必须告诉它,它必须使用包含的 JAR。
  • 阅读文档后... "注意:Class-Path 标头指向本地网络上的类或 JAR 文件,而不是 JAR 文件中的 JAR 文件或可通过 Internet 协议访问的类。要加载将 JAR 文件中的 JAR 文件中的类放入类路径中,您必须编写自定义代码来加载这些类。例如,如果 MyJar.jar 包含另一个名为 MyUtils.jar 的 JAR 文件,则不能在 MyJar 中使用 Class-Path 标头。 jar 的清单将 MyUtils.jar 中的类加载到类路径中。” (download.oracle.com/javase/tutorial/deployment/jar/downman.html)

标签: scala jar classpath manifest


【解决方案1】:

【讨论】:

    【解决方案2】:

    对不起,我犯了一个愚蠢的错误。实际上我在hadoop中运行scala,并调用“hadoop -jar”而不是“hadoop jar”,这是一个愚蠢的错误。

    【讨论】:

      猜你喜欢
      • 2013-04-26
      • 2013-11-04
      • 2013-05-08
      • 2011-02-02
      • 1970-01-01
      • 2015-12-30
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多