如何从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")