8

Scala ワークシート (および Scala インタープリター) の作業ディレクトリーを、Eclipse インストール・ディレクトリーではなく、Eclipse プロジェクト・パスにしたいと考えています。どうすれば(非プログラム的に)それを達成できますか?

を使用できることはわかっていますSystem.setProperty("user.dir", "...")が、コードに属していない私見です。さらに、うまくいかないようです:

object ScratchWS {
  System.setProperty("user.dir", "C:\\")          //> res0: String = C:\adt-bundle-windows-x86_64-20130219\eclipse
  new File("putty.exe").exists()                  //> res1: Boolean = false

  new File("C:\\putty.exe").exists()              //> res2: Boolean = true
}
4

1 に答える 1

7

Scala Worksheet 0.2.1 以降、ワークシートの作業ディレクトリを制御することはできません。

セキュリティ上の理由から、JVM が実行されると、JVM の動作を直接 (直接) 変更することはできません。Java で現在の作業ディレクトリを変更するを参照してください。詳細については。

したがって、通常は常に完全修飾パスを指定するか、完全修飾「アンカー ポイント」からの相対パスを指定することをお勧めします。

Scalaワークシートでそのような「アンカーポイント」を取得するために私が思いついたハックは次のとおりです

object WorksheetProjectDirHack {
    // Yuck.... See: https://github.com/scala-ide/scala-worksheet/issues/102
    import Properties._
    val pathSep = propOrElse("path.separator", ":")
    val fileSep = propOrElse("file.separator", "/")
    val projectDir = javaClassPath.split(pathSep).
        filter(_.matches(".*worksheet.bin$")).head.
        split(fileSep).dropRight(2).mkString(fileSep)

    val otherProjectFile = new File(projectDir, "src/main/resources/data.bin")
}

これは基本的.worksheet/binに、Eclipse プロジェクト ディレクトリに作成され、Scala Worksheet クラスパスに追加されたディレクトリの存在を利用して機能します。

于 2014-02-16T15:03:12.907 に答える