我正在运行 64 位 OpenSUSE 12.1,今天我从官网下载了最新的 Scala 2.9.2,解压 tgz 并进入 scala-2.9.2/bin 目录后,我执行“scala”并收到此错误消息:
[init] error: error while loading <root>, error in opening zip file
Failed to initialize compiler: object scala not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programatically, settings.usejavacp.value = true.
我试图运行 scala -usejavacp 但它没有帮助。我在许多其他发行版中经常使用 Scala,以前从未遇到过这个错误。
我的 OpenSUSE 安装已安装 OpenJDK 6。
请提出您的意见,谢谢!
我做了以下尝试来解决这个问题:
- 安装Oracle JDK 1.7 并运行scala,确认scala REPL 报告在热点JVM 1.7 中运行,出现同样的错误。
- 安装 sbt 并从 sbt 运行“控制台”,同样的错误发生。
- strace 和 diff 作为普通用户的 sudo scala 和 scala 之间的输出,除了上面的错误消息之外没有任何区别。
- scala -Ylog-classpath 作为 su 和普通用户,然后比较输出,同上。
- 禁用 AppArmor 并再次尝试,同样的错误消息。
- 下载其他 scala 版本(所有 2.9x 和 2.10 里程碑 4),它们的所有 REPL 都给出相同的错误消息。
- 确保在 scala REPL 运行之前 fsc 没有运行
- 确保主机名是可解析的
嗯,这是一个非常有趣的问题,如果我能幸运地找到它,我肯定会发布一个解决方案。
非常感谢你的帮助!
最后编辑:感谢这里和 reddit 上的所有人 (http://www.reddit.com/r/scala/comments/w5s0m/please_help_scala_only_runs_as_root_user_gives/),他们提供了非常有价值的建议来帮助我解决这个非常奇怪的问题。请参阅下面的答案以获取解决方案。