0

正常に動作する次の Scala 2.10 スクリプトがあります。

#!/bin/bash

classpath="${CLASSPATH}"
unset CLASSPATH

exec ${SCALA_HOME}/bin/scala -cp "${classpath}" "$0" "$@" 2>&1
!#

import stuff

しかし、そうCLASSPATHでないunset場合、次のようなもので失敗します:

$ ./setter-for-catan.scala
./setter-for-catan.scala:12: error: not found: object play
import play.api.libs.json.JsArray
       ^

one error found

なぜこうなった?

4

2 に答える 2

2

scala スクリプトには控えめな-debugオプションがあります。

-Ylog-classpathコンパイラが何を使用しているかを確認するために使用します。

-nc「コンパイルサーバーデーモンなし」と言うために使用します。

fsc -shutdown最初からやり直すために使用します。

パッケージの変更は忌み嫌われるため、パッケージ名や古いパッケージ オブジェクトなどを含むパスに予期しないディレクトリがあると、不可解なビルドの問題が発生します。

PathResolver表示されるクラスパスをダンプするために使用します。

パッケージ名が含まれる空のディレクトリは、パッケージの検出を妨げる可能性があります。

${SCALA_HOME}/bin/scala -cp "${classpath}" scala.tools.util.PathResolver
${SCALA_HOME}/bin/scala -cp "${classpath}" scala.tools.util.PathResolver some-args

次のように表示されます。

apm@mara:~/tmp/scripts$ ./foo.sh
object Environment {
  scalaHome          = /media/Software/scala-2.10.1 (useJavaClassPath = true)
  javaBootClassPath  = <1122 chars>
  javaExtDirs        = 
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext
/usr/java/packages/lib/ext
  javaUserClassPath  = ""
  scalaExtDirs       = 
}
object Defaults {
  scalaHome            = /media/Software/scala-2.10.1
  javaBootClassPath    = 
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/resources.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/sunrsasign.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jsse.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/charsets.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/netx.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/plugin.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rhino.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jfr.jar
/usr/lib/jvm/java-7-openjdk-amd64/jre/classes
/media/Software/scala-2.10.1/lib/akka-actors.jar
/media/Software/scala-2.10.1/lib/jline.jar
/media/Software/scala-2.10.1/lib/scala-actors.jar
/media/Software/scala-2.10.1/lib/scala-actors-migration.jar
/media/Software/scala-2.10.1/lib/scala-compiler.jar
/media/Software/scala-2.10.1/lib/scala-library.jar
/media/Software/scala-2.10.1/lib/scala-partest.jar
/media/Software/scala-2.10.1/lib/scalap.jar
/media/Software/scala-2.10.1/lib/scala-reflect.jar
/media/Software/scala-2.10.1/lib/scala-swing.jar
/media/Software/scala-2.10.1/lib/typesafe-config.jar
  scalaLibDirFound     = Some(/media/Software/scala-2.10.1/lib)
  scalaLibFound        = /media/Software/scala-2.10.1/lib/scala-library.jar
  scalaBootClassPath   = 
  scalaPluginPath      = /media/Software/scala-2.10.1/misc/scala-devel/plugins
}
 COMMAND: 'scala some-args'
RESIDUAL: 'scala some-args'
于 2013-07-02T01:42:41.837 に答える