Scala 下载及安装
Spark runs on Java 8+, Python 2.7+/3.4+ and R 3.1+. For the Scala API, Spark 2.4.0 uses Scala 2.11. You will need to use a compatible Scala version (2.11.x).
Note that support for Java 7, Python 2.6 and old Hadoop versions before 2.6.5 were removed as of Spark 2.2.0. Support for Scala 2.10 was removed as of 2.3.0.
我这里是选择 Spark 2.4.0,所以 Scala 选择 2.11.12 版本
下载: https://www.scala-lang.org/download/2.11.12.html
- 解压到用户目录下(你随便,我这里是应为根目录空间不太够)
tar -zxvf scala-2.11.12.tgz -C ~
- 同 java 一样要配置环境变量
sudo vi /etc/profile
# 末尾添加
# SCALA_HOME 指定 scala 安装在哪里
export SCALA_HOME=/home/josonlee/tools/scala-2.11.12
export PATH=$SCALA_HOME/bin:$PATH
如图是我 scala 解压的位置,以及环境变量写法
- scala 就这样安装好了,试着命令行下输入 scala 写两行代码
eclipse 安装 Scala-IDE 插件
注意:eclipse 版本不要太新,最好是 4.7 版本
其实我建议直接下载 Scala IDE for Eclipse: http://scala-ide.org/download/sdk.html
如果已安装 eclipse 的话,可以去安装 scala IDE 插件,不建议直接在 eclipse MarketPlace 安装,版本太新可能不适配,如图
点击这里下载 ,选择和你 eclipse、scala 适配的的版本,下载如下方所示的 zipfile
This release is only available for Eclipse 4.x and can be retrieved as zipfile .
解压 zipfile 后,将解压文件放到 eclipse 文件夹下的 dropins 目录下,重启 eclipse,然后按提示默认安装即可
启动 scala 报错-java.lang.NumberFormatException:-For-input-string:-"0x100"-解决
报错信息如下,貌似也不影响 scala 运行,因为还是可以编译代码的
josonlee@josonlee-PC:~$ scala
Welcome to Scala 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_191).
Type in expressions for evaluation. Or try :help.
[ERROR] Failed to construct terminal; falling back to unsupported
java.lang.NumberFormatException: For input string: "0x100"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at jline.internal.InfoCmp.parseInfoCmp(InfoCmp.java:59)
at jline.UnixTerminal.parseInfoCmp(UnixTerminal.java:242)
at jline.UnixTerminal.<init>(UnixTerminal.java:65)
at jline.UnixTerminal.<init>(UnixTerminal.java:50)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at jline.TerminalFactory.getFlavor(TerminalFactory.java:211)
at jline.TerminalFactory.create(TerminalFactory.java:102)
at jline.TerminalFactory.get(TerminalFactory.java:186)
at jline.TerminalFactory.get(TerminalFactory.java:192)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:243)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:235)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:223)
at scala.tools.nsc.interpreter.jline.JLineConsoleReader.<init>(JLineReader.scala:64)
at scala.tools.nsc.interpreter.jline.InteractiveReader.<init>(JLineReader.scala:33)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at scala.tools.nsc.interpreter.ILoop$$anonfun$scala$tools$nsc$interpreter$ILoop$$instantiater$1$1.apply(ILoop.scala:858)
at scala.tools.nsc.interpreter.ILoop$$anonfun$scala$tools$nsc$interpreter$ILoop$$instantiater$1$1.apply(ILoop.scala:855)
at scala.tools.nsc.interpreter.ILoop.scala$tools$nsc$interpreter$ILoop$$mkReader$1(ILoop.scala:862)
at scala.tools.nsc.interpreter.ILoop$$anonfun$22$$anonfun$apply$10.apply(ILoop.scala:873)
at scala.tools.nsc.interpreter.ILoop$$anonfun$22$$anonfun$apply$10.apply(ILoop.scala:873)
at scala.util.Try$.apply(Try.scala:192)
at scala.tools.nsc.interpreter.ILoop$$anonfun$22.apply(ILoop.scala:873)
at scala.tools.nsc.interpreter.ILoop$$anonfun$22.apply(ILoop.scala:873)
at scala.collection.immutable.Stream.map(Stream.scala:418)
at scala.tools.nsc.interpreter.ILoop.chooseReader(ILoop.scala:873)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1$$anonfun$newReader$1$1.apply(ILoop.scala:893)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.newReader$1(ILoop.scala:893)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.scala$tools$nsc$interpreter$ILoop$$anonfun$$preLoop$1(ILoop.scala:897)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1$$anonfun$startup$1$1.apply(ILoop.scala:964)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:990)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:891)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:891)
at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:891)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:74)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
scala>
解决方法如下:
sudo vi /etc/profile
# 在环境变量中导入
export TERM=xterm-color
还有一中方法是:
I found the package which causes this issue: ncurses. I downgraded ncurses to version ncurses-6.0+20170429-1 (I am using Arch Linux) and SBT starts just fine.
Steps for Arch Linux:
cd /var/cache/pacman/pkg sudo pacman -U ncurses-6.0+20170429-1-x86_64.pkg.tar.xz # or some other older version
Steps for Mac: see https://github.com/jline/jline2/issues/281
I think this issue was introduced with ncurses version 20170506, see: http://invisible-island.net/ncurses/NEWS.html#index-t20170506
- modify tic/infocmp display of numeric values to use hexadecimal when
they are "close" to a power of two, making the result more readable.
I filed an issue on the SBT issue tracker: https://github.com/sbt/sbt/issues/3240
参考 stackoverflow 上的问题: https://stackoverflow.com/questions/44317384/sbt-error-failed-to-construct-terminal-falling-back-to-unsupported
编写 scala 代码时一直弹出 An internal error occurred during: "Computing additional info".错误解决
具体来说是写代码时,自动补齐,然后弹窗报如下错误
An internal error occurred during: "Computing additional info".
org.eclipse.jdt.internal.core.SearchableEnvironment.(Lorg/eclipse/jdt/internal/core/JavaProject;Lorg/eclipse/jdt/core/WorkingCopyOwner;)V
我试过不影响编译,但是一直弹影响敲代码。好死不死的,找了一晚上才找到问题解决
报错的原因是在线搜索源代码导致的,有几篇博客讲了针对 java 的解决办法。但我尝试过用 eclipse 编辑 java 代码不会出这个错,针对 scala 目前就以下两种解决办法
1、我的 eclipse 是 2018.12 最新版本 4.10.0(Version: 2018-12 (4.10.0)),和它 scala IDE 插件不适配,解决方法,下低版本的 eclipse,不要上 MarketPlace 安装,去官网找对应版本。
这个不适配的问题不仅仅是 4.10,4.9、4.8 版本都有这个问题。我在 eclipse 插件市场评论 和 StackOverflow 上( https://stackoverflow.com/questions/53563939/ctrl-space-giving-error-saying-computing-additional-info-has-encountered-a-p )都看到有人提到这个问题。就是版本不适配问题
最简单就如上面的直接下 Scala IDE for Eclipse。我是安了个氧气版的 eclipse 4.7 和 Scala IDE for Eclipse 都 OK 了
2、针对 scala 项目取消自动查找补齐代码功能。window->proference 然后找到如图所示的地方,取消针对 scala 的两个选项,保存退出即可
这个办法使用后就没有代码提示了,新手还是用上面那个办法:降低 eclipse 版本,或者直接下载 Scala IDE for Eclipse 版本就好了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论