как добавить tools.jar как «динамическую зависимость» в sbt. Является ли это возможным?
мне нужно использовать tools.jar в моем проекте, но нет особого смысла упаковывать его в jar, так как у пользователя он уже есть. Итак, возможно ли использовать его в качестве «динамической зависимости»? Я хочу, чтобы мой кодcompile используяtools.jar
файл найден вmy JAVA_HOME
, но я не хочу, чтобы он был упакован вместе с ним. я могу убедиться, что добавить его в classpath с двойной активацией во время выполнения сuser's JAVA_HOME
используется вместо например:
object Main1 extends App {
val myjar = Main1.getClass.getProtectionDomain.getCodeSource.getLocation.getFile
val tools = System.getProperty("java.home").dropRight(3)+"lib/tools.jar" // drop "jre"
val arguments = Array("java", "-cp", myjar+":"+tools, "me.myapp.Main2") ++ args
val p = Runtime.getRuntime.exec(arguments)
p.getErrorStream.close
p.getOutputStream.close
}
К вашему сведению: я упаковываю приложение, используя плагин сборки, в отдельный файл jar.
EDIT:
уродливым решением было бы скопироватьtools.jar
файл в каталог lib в моем проекте, и добавьте:
excludedJars in assembly <<= (fullClasspath in assembly) map { cp =>
cp filter {_.data.getName == "tools.jar"}
}
вbuild.sbt
это можно сделать более элегантно, без копирования файла JAR? было бы намного проще переключать JVM и использовать & quot; право & quot;tools.jar
файл автоматически ...