Java 如何从可执行jar引用tools.jar
假设我正在这样做:Java 如何从可执行jar引用tools.jar,java,Java,假设我正在这样做: java -jar someJar “someJar”需要引用tools.jar(用于jsp编译)。我不想将tools.jar捆绑在someJar中,因为我担心与正在执行的JVM不兼容。我不能指定-classpath,因为使用-jar时会忽略它。我试过-Djava.ext.dirs,但没用。有人知道如何从可执行jar引用tools.jar吗?从Java 1.4开始: 工具类现在位于 单独归档(tools.jar)并可以 仅在用户手册中包含时使用 类路径(稍后解释) 换句话说
java -jar someJar
“someJar”需要引用tools.jar(用于jsp编译)。我不想将tools.jar捆绑在someJar中,因为我担心与正在执行的JVM不兼容。我不能指定-classpath,因为使用-jar时会忽略它。我试过-Djava.ext.dirs,但没用。有人知道如何从可执行jar引用tools.jar吗?从Java 1.4开始:
工具类现在位于
单独归档(tools.jar)并可以
仅在用户手册中包含时使用
类路径(稍后解释)
换句话说,tools.jar不能放在扩展目录中。这实际上意味着在JAR清单中指定它可能根本不是一个好主意。但是,有两种选择:
java-cp$JDK_HOME/lib/tools.JAR MainClass
命令初始化,其中MainClass
是类的完全限定名-jar选项优先于-classpath选项。但是,您可以在正在执行的jar的清单文件中包含类路径引用。有一个名为“类路径”的属性,它可以包含对其他JAR的相对或绝对引用 这里有一个片段向您展示如何
<target name="jar" depends="compile">
<jar destfile="foo.jar" basedir="classes">
<manifest>
<attribute name="Main-Class" value="com.wiggle.foo" />
<attribute name="Class-Path"
value="C:/Java/jdk1.5.0_21/lib/tools.jar" />
</manifest>
</jar>
</target>
请注意,如果要在类路径属性中包含多个JAR,它们必须位于清单文件的一行中,我不希望清单引用依赖于系统的位置。在使用-jar时,我也不能使用-classpath。我认为解决这个问题的方法是使用-classpath,而不是使用-jar。我将把主类放在命令行上,而不是将主类放在清单中