1

我无法启动 scala jar;当我启动它时,我收到错误“线程“main”java.lang.NoClassDefFoundError:scala/collection/immutable/List 中的异常”,这似乎意味着未加载 scala 库...

在此处输入图像描述

这是一个屏幕截图,显示了工件窗口上的大量信息。这是清单:


清单版本:1.0 类路径:libs/scala-library-2.10.0.jar libs/commons-logging-1.1.1.j ar libs/jcip-annotations-1.0.jar libs/jwnl-1.4_rc3.jar libs /laf-plugi n-7.2.1.jar libs/laf-widget-7.2.1.jar libs/miglayout-core-4.2.jar libs/miglayout-swing-4.2.jar libs/scala-actors.jar libs/ scala-library.jar libs/scala-swing.jar libs/slf4j-api-1.6.4.jar libs/slick_2.10-1.0.0 .jar libs/sqlite-jdbc-3.7.2.jar libs/substance- 7.2.1.jar libs/trident -7.2.1-swing.jar 主类:Fenetre


当我输入“java xf myJar.jar”时,目录中有提取的文件: - .class 文件 - 在 libs 文件夹中,有包括 scala-library.jar 和 scala-library-2.10.0.jar 的库(我在清单中只指定了这两个文件之一以避免冲突)

你能帮助我吗?

4

2 回答 2

0

不管你的清单告诉你什么,当你运行应用程序时,你的类路径中没有包含 scala-library,或者当你尝试导入 List 时会出现一些混乱。Scala 应该使用根 Predef 实现自动导入项目中的不可变集合类。

Predef 为常用类型提供类型别名,例如不可变集合类型 scala.collection.immutable.Map、scala.collection.immutable.Set 和scala.collection.immutable.List构造函数 (scala.collection.immutable. :: 和 scala.collection.immutable.Nil)。还提供了具有简单构造函数的类型 Pair (a scala.Tuple2) 和 Triple (a scala.Tuple3)。

核心 Scaladocs 中的预定义

尝试从您的应用程序中打印类路径以确认。

尽管与您的问题无关,但由于IntelliJ IDEA 13 具有完整的 SBT 集成支持,我建议您使用 SBT 进行依赖管理。不使用 IntelliJ 的合作者也会更开心,因为 SBT 为他们在项目工作时提供了更多构建技术、编辑器和其他工具的选择。

于 2013-12-09T17:33:09.393 回答
0

我是 Scala 的新手,不知道问题出在哪里,但是我一直在编译包含所有必需库的“胖罐子”。

我一直在使用https://github.com/sbt/sbt-assembly成功地做到这一点。

于 2013-12-09T16:03:54.293 回答