2013-05-08 17 views
7

Scala çalışma sayfasının (ve Scala yorumlayıcısının) çalışma dizininin Eclipse kurulum dizininden ziyade Eclipse proje yolu olmasını isterim. Ben (programatik olmayan) bunu nasıl yapabilirim?Scala çalışma sayfasının çalışma dizinini yapılandırın

System.setProperty("user.dir", "..."), ancak kodda bulunmayan IMHO kullanabileceğimi biliyorum. Dahası, iş için görünmüyor:

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

Burada projeye karşı kaydedilen bazı sorunlar var: [# 102] (https://github.com/scala-ide/scala-worksheet/issues/102), [# 156] (https://github.com/scala-ide/scala-çalışma sayfası/sorunlar/156). – metasim

cevap

5

Scala Çalışma bunun çalışma sayfası çalışma dizinini kontrol etmek mümkün değildir 0.2.1 itibariyle.

Güvenlik nedenleriyle, bir JVM çalıştığında, doğrudan JVM'nin çalışmasını değiştirmek (doğrudan) mümkün değildir. Ayrıntılar için bkz. Changing the current working directory in Java?. Bu nedenle, her zaman tam olarak nitelenmiş yollar belirtmek veya tam olarak nitelenen bir "bağlantı noktasından" göreli yolları belirlemek genellikle iyi bir uygulamadır. İşte

ben Temelde sizin Eclipse proje dizininde oluşturulan .worksheet/bin dizinin varlığının yararlanarak çalışır Scala Çalışma

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

böyle bir "çapa noktasını" almak için geldi kesmek var ve Scala Çalışma Sayfası sınıf yoluna eklenmiştir.