Lui*_*hys 5 scala read-eval-print-loop
当我在Windows 7 64位上启动REPL(它在我的Windows XP笔记本电脑上运行正常)时,我收到以下消息:
Failed to created JLineReader: java.lang.NoClassDefFoundError: Could not initial
ize class org.fusesource.jansi.internal.Kernel32
Falling back to SimpleReader.
Run Code Online (Sandbox Code Playgroud)
这意味着历史记录和代码完成不起作用.
我搜索了问题,但我找不到任何解决方案.我没有安装sbt或Maven或常春藤,所以我认为这与那些无关.我的%SCALA_HOME%已正确设置.
在这个帖子中有一些关于Scala 2.8的依赖:http://www.scala-lang.org/node/9855,但我不明白如何在我的系统上解决这个问题.
根据这个帖子中的建议:http://www.scala-lang.org/node/9795我已经更新了我的MS C++库,但仍然有问题.我运行了第11篇文章中建议的代码并获得以下内容:
scala> println(System.getProperty("java.library.path"))
C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\
Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;c:\Program F
iles (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Win
dows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files
(x86)\QuickTime\QTSystem\;C:\Program Files (x86)\ZipGenius 6\;C:\Program Files (
x86)\Java\jdk1.6.0_22\bin;C:\Program Files\SlikSvn\bin\;C:\Program Files\apache-
ant-1.8.2\bin;C:\Program Files\TortoiseSVN\bin;C:\cygwin\bin;C:\Program Files (x
86)\Notepad++;C:\Program Files (x86)\groovy-1.7.10\bin;C:\Program Files\scala2.9
\bin
scala> println(org.fusesource.jansi.internal.WindowsSupport.getConsoleMode)
java.lang.NoClassDefFoundError: Could not initialize class org.fusesource.jansi.
internal.Kernel32
at org.fusesource.jansi.internal.WindowsSupport.getConsoleMode(WindowsSu
pport.java:48)
at .<init>(<console>:8)
at .<clinit>(<console>)
at .<init>(<console>:11)
at .<clinit>(<console>)
at $export(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:592)
at scala.tools.nsc.interpreter.IMain$Request$$anonfun$10.apply(IMain.sca
la:828)
at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:4
3)
at scala.tools.nsc.io.package$$anon$2.run(package.scala:31)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
任何帮助让这个工作得到赞赏!
编辑:解决方案是输入del %TEMP%\jansi.dll- 请参阅下面 huynhjl 的评论了解原因。
REPL 似乎与 64 位 JRE 不兼容。我JAVA_HOME在高级系统设置中更改了环境变量以使用 32 位版本,即从C:\Program Files\Java\jre6到C:\Program Files (x86)\Java\jdk1.6.0_22.
scala.bat然后我必须通过更改第 24 行来纠正文件中的错误(仍然存在)
if exist "%JAVA_HOME%\bin\java.exe" set _JAVACMD=%JAVA_HOME%\bin\java.exe
Run Code Online (Sandbox Code Playgroud)
到
if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
Run Code Online (Sandbox Code Playgroud)
现在工作正常了。
java从命令行足够聪明,可以使用 64 位运行时,而不管您的 Path 或 JAVA_HOME 变量如何,但scala使用您在 JAVA_HOME 中指定的任何内容(实际上可能应该是这样)。但 64 位运行时比 32 位快很多,所以我想使用它。
目前看来我必须在功能齐全的 REPL 和在 64 位 JVM 上运行之间做出选择。:(
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |