【问题标题】:scalding NoClassDefFoundError烫伤 NoClassDefFoundError
【发布时间】:2014-06-19 02:33:13
【问题描述】:

在 OSX 上安装 java,scala scalding 后,当我尝试运行 WordCountJob 文件时出现以下错误

$ scripts/scald.rb --local  WordCountJob.scala --input someInputfile.txt --output ./someOutputFile.tsv

编译 WordCountJob.scala scalac -classpath /Users/me/.sbt/boot/scala-2.9.3/lib/scala-library.jar:/Drive/me/Coding/scalding/scalding-core/target/scala-2.9.3/scalding-core-assembly -0.9.1.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/hadoop-core-1.1.2.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/commons-codec-1.8.jar :/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/commons-configuration-1.9.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/jackson-asl-0.9.5.jar:/var/folders/ 5q / 7bth9vvd2tv8q57f737f6jxm0000gn / t / maven / jackson-mapper-asl-1.9.13.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/t/maven/commons-lang-2.6.jar:/ var /文件夹/ 5q / 7bth9vvd2tv8q57f737f6jxm0000gn / T/maven/slf4j-log4j12-1.6.6.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/log4j-1.2.15.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/common- httpclient-3.1.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/commons-cli-1.2.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/commons-loggin g-1.1.1.jar:/var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/maven/zookeeper-3.3.4.jar -d /var/folders/5q/7bth9vvd2tv8q57f737f6jxm0000gn/T/script-build WordCountJob.scala 线程“主”中的异常 java.lang.NoClassDefFoundError: scala/tools/nsc/Main 原因: java.lang.ClassNotFoundException:scala.tools.nsc.Main at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247)

有人知道怎么解决吗?

【问题讨论】:

    标签: java scala sbt scalding


    【解决方案1】:

    找不到 Scala 编译器。您需要设置 SCALA_HOME 并将 ./bin 目录添加到您的 PATH:

     export SCALA_HOME=<where you installed scala>
     export PATH=$PATH:$SCALA_HOME/bin
    

    【讨论】:

    • 我已将我的 stb 程序集和 scald.rb 错误放在上面的评论中
    • 您也可以尝试不同的路线:仅使用 SBT。看看github.com/vitalyg/Strata2014ScaldingTutorial。可能你需要在 project/Dependencies.scala 中更新 scalding 版本号
    • 也可以尝试 ./scald.rb --clean 当这样的事情发生时。有时缓存的类已损坏。
    【解决方案2】:

    在一些论坛上,我看到在 JRE 7 中不存在此错误,因此我已更新到 jre 7

    $ java -版本 java版本“1.7.0_55” Java(TM) SE 运行时环境 (build 1.7.0_55-b13) Java HotSpot(TM) 64 位服务器 VM(内部版本 24.55-b03,混合模式)

    激活它的唯一方法

    export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
    

    根据Installing Java on OS X 10.9 (Mavericks)

    $ 回声 $JAVA_HOME /Library/Internet 插件/JavaAppletPlugin.plugin/Contents/Home

    我在 ~/.profile 中添加了以下几行

    export JAVA_HOME=$(/usr/libexec/java_home)
    export SCALA_HOME="/usr/local/Cellar/scala/2.9.3"
    export PATH=$PATH:$SCALA_HOME/bin
    

    在 /scalding 中我想运行 -> sbt 程序集并出现以下错误

    [信息] 通过:总计 51,失败 0,错误 0,通过 51 [信息] 检查每个 *.class/*.jar 文件的 SHA-1。 [信息] 合并文件... [警告] 将 'META-INF/MANIFEST.MF' 与策略 'discard' 合并 [警告] 策略“丢弃”已应用于文件 [信息] 装配最新:/Drive/me/Coding/scalding/scalding-date/target/scala-2.9.3/scalding-date-assembly-0.9.1.jar [错误] (maple/compile:compile) javac 返回非零退出代码 [错误] 总时间:29 秒,2014 年 5 月 2 日晚上 8:27:30 完成

    尝试运行 WordCountJob 时出现以下错误

    $ scripts/scald.rb --local WordCountJob.scala --input someInputfile.txt --output ./someOutputFile.tsv /Drive/me/Coding/scalding/scalding-core/target/scala-2.9.3/scalding-core-assembly-0.9.1.jar 丢失,您可能需要运行 sbt assembly

    在本地模式下运行 scalding 似乎是一项不可能完成的任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      相关资源
      最近更新 更多