1. 程式人生 > 實用技巧 >安裝好Scala之後,從cmd啟動scala發生空指標異常的解決方法

安裝好Scala之後,從cmd啟動scala發生空指標異常的解決方法

我安裝的scala的版本是2.12.11,Java版本是1.8,之前使用scala 2.11.8的時候從命令列啟動scala,沒有出現過空指標異常,但是換到2.12版本之和,就出現了這個問題。

java.lang.NullPointerException at java.util.Arrays.sort(Arrays.java:1438) at scala.tools.nsc.classpath.JFileDirectoryLookup.listChildren(DirectoryClassPath.scala:113) at scala.tools.nsc.classpath.JFileDirectoryLookup.listChildren$(DirectoryClassPath.scala:97) at scala.tools.nsc.classpath.DirectoryClassPath.listChildren(DirectoryClassPath.scala:202) at scala.tools.nsc.classpath.DirectoryClassPath.listChildren(DirectoryClassPath.scala:202) at scala.tools.nsc.classpath.DirectoryLookup.list(DirectoryClassPath.scala:73) at scala.tools.nsc.classpath.DirectoryLookup.list$(DirectoryClassPath.scala:69) at scala.tools.nsc.classpath.DirectoryClassPath.list(DirectoryClassPath.scala:202) at scala.tools.nsc.classpath.AggregateClassPath.$anonfun$list$1(AggregateClassPath.scala:76) at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234) at scala.collection.Iterator.foreach(Iterator.scala:929) at scala.collection.Iterator.foreach$(Iterator.scala:929) at scala.collection.AbstractIterator.foreach(Iterator.scala:1417) at scala.collection.IterableLike.foreach(IterableLike.scala:71) at scala.collection.IterableLike.foreach$(IterableLike.scala:70) at scala.collection.AbstractIterable.foreach(Iterable.scala:54) at scala.collection.TraversableLike.map(TraversableLike.scala:234) at scala.collection.TraversableLike.map$(TraversableLike.scala:227) at scala.collection.AbstractTraversable.map(Traversable.scala:104) at scala.tools.nsc.classpath.AggregateClassPath.list(AggregateClassPath.scala:74) at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader.doComplete(SymbolLoaders.scala:271) at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:220) at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1530) at scala.reflect.internal.Mirrors$RootsBase.init(Mirrors.scala:225) at scala.tools.nsc.Global.rootMirror$lzycompute(Global.scala:65) at scala.tools.nsc.Global.rootMirror(Global.scala:63) at scala.tools.nsc.Global.rootMirror(Global.scala:36) at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass$lzycompute(Definitions.scala:267) at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass(Definitions.scala:267) at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1422) at scala.tools.nsc.Global$Run.<init>(Global.scala:1164) at scala.tools.nsc.interpreter.IMain._initialize(IMain.scala:125) at scala.tools.nsc.interpreter.IMain.initializeSynchronous(IMain.scala:147) at scala.tools.nsc.interpreter.ILoop.$anonfun$process$11(ILoop.scala:1030) at scala.tools.nsc.interpreter.ILoop.startup$1(ILoop.scala:1011) at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:1049) at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:82) at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:85) at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

在網上查詢資料,看到原因是沒有配置classpath變數,於是在配置完classpath之後解決了這個問題。具體的步驟如下:

開啟控制面板的高階系統設定,配置環境變數,找到classpath這一項(前提是環境變數已經配置好)將下面的值複製進去
.;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar

注意,“.;”這個永遠放在最前面。