2011-09-27 35 views
1

如何從Scala代碼的文件系統獲取scala-library.jar的完整路徑? 我試過類似scala.Console.getClass.getProtectionDomain.getCodeSource.getLocation.getPath的方法,但它似乎不起作用(返回指針null)。獲取scala-library.jar位置

回答

1

一種方式是通過類路徑這樣得到它:

System.getProperty("java.class.path").split(java.io.File.pathSeparator) 
    .filter{_.contains("scala-library")}.head 
+0

謝謝,我發現我們的2個方法在命令行上工作正常,但都在Eclipse上使用Scala插件失敗。 – classicalist

1

一個由thoredge有點類似於答案,但也搜索引導類路徑(這應該在Eclipse + ScalaPlugin工作):

List("java.class.path", "java.boot.class.path", "sun.boot.class.path") 
    .flatMap(s => System.getProperty(s, "") 
    .split(java.io.File.pathSeparator)) 
    .find(new java.io.File(_).getName == "scala-library.jar") 
3

我們用這個來調整卡尺類路徑:

val so = classOf[ScalaObject].getResource("ScalaObject.class").toString 
val scalaJar = so.substring(so.lastIndexOf(":") + 1, so.lastIndexOf("!")) 

這個作品在eclip se和Mac OS和Linux下的命令行中的fat-jar。