【问题标题】:Why do I get `java.lang.NoClassDefFoundError: scala/Function1` when I run my code in ScalaIDE?当我在 ScalaIDE 中运行我的代码时,为什么会得到 `java.lang.NoClassDefFoundError: scala/Function1`?
【发布时间】:2014-08-16 10:21:08
【问题描述】:

这是我用来从 Java 调用 Scala 方法的简单测试:

public static void main(String args[]) {
  java.util.Map<String, java.util.List<String>> rec = news.recommend.DriverObj.runTest();     
  System.out.println(rec.toString());
}

Scala 方法的定义如下:

def runTest: java.util.Map[String, java.util.List[String]] = {
  new java.util.HashMap[String, java.util.List[String]]
}

但是它会抛出一个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Function1
    at news.recommend.DriverObj.runTest(DriverObj.scala)

我应该怎么做才能让它顺利运行?

更新:我通过 Eclipse 运行它,我的构建路径包含:

那么应该找到 Scala 库吗?

【问题讨论】:

  • 运行时类路径上有什么?
  • 在我看来,您没有在类路径中包含 scala 库的 jar。 scala 自动包含它,java 不包含。
  • @Dave Newton 请查看问题更新
  • 构建路径和运行路径不一定相同,我也相信 Scala 库不在运行时类路径中。
  • @StackG,您可以手动将scala-library.jar 作为库添加到您的Eclipse 项目中,就像使用Java 时添加任何普通jar 一样。

标签: java scala maven noclassdeffounderror scala-ide


【解决方案1】:

将 Scala 依赖项添加到 maven 构建可以解决问题:

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.10.3</version>
</dependency>

【讨论】:

  • 对我没有帮助。我跑过加特林。看起来 Gatling 以不同的方式控制其类路径。
  • 我已经列出了此依赖项,但问题仍然存在。 @Kuang Wenyi 的解决方案对我有用。
【解决方案2】:

对于我来说,在配置中 “运行/调试配置”[idealJ]

记得选择 “包含具有“已提供”范围的依赖项”

【讨论】:

  • 为我工作。谢谢!
  • 也为我工作,但为什么?
  • @Filip 我相信 IdeaJ 和 maven 之间存在一些问题。
猜你喜欢
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
相关资源
最近更新 更多