获取scala-library.jar位置



如何从Scala代码文件系统中获得Scala -library.jar的完整路径?我尝试过像scala.Console.getClass.getProtectionDomain.getCodeSource.getLocation.getPath这样的方法,但它似乎不起作用(返回null指针)。

我们用它来调整caliper的类路径:

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

这可以在eclipse和Mac OS和Linux下的命令行fat-jar中使用。

一种方法是像这样通过类路径获取它:

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

与thodge的答案有点相似,但也搜索引导类路径(这应该在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")

最新更新