2013-05-08 1 views
7

Ich möchte, dass das Arbeitsverzeichnis für das Scala-Arbeitsblatt (und der Scala-Interpreter) der Eclipse-Projektpfad und nicht das Eclipse-Installationsverzeichnis ist. Wie kann ich das (nicht programmatisch) erreichen?Konfigurieren des Arbeitsverzeichnisses des Scala-Arbeitsblatts

Ich weiß, dass ich System.setProperty("user.dir", "...") verwenden kann, aber IMHO, die nicht in den Code gehört. Ferner scheint es nicht zu funktionieren:

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 
} 
+0

Hier sind einige Probleme, die für das Projekt protokolliert wurden: [# 102] (https://github.com/scala-ide/scala-worksheet/issues/102), [# 156] (https://github.com/scala-ide/scala-worksheet/issues/156). – metasim

Antwort

5

Ab Scala Arbeitsblatt 0.2.1 ist es nicht möglich das Arbeitsblatt Arbeitsverzeichnis zu steuern.

Aus Sicherheitsgründen ist es nach der Ausführung einer JVM nicht (direkt) möglich, die JVM direkt zu ändern. Details finden Sie unter Changing the current working directory in Java?.

Daher empfiehlt es sich, immer vollständig qualifizierte Pfade anzugeben oder relative Pfade von einem vollständig qualifizierten Ankerpunkt anzugeben.

Hier ist ein Hack, den ich mit für das Erhalten eines solchen „Ankerpunkt“ in der Scala Arbeitsblatt

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") 
} 

kam Es funktioniert im Grunde durch die Vorteile der die Existenz der in der Eclipse-Projektverzeichnis erstellt .worksheet/bin Verzeichnis unter und an den Klassenpfad von Scala Worksheet angehängt.

Verwandte Themen