繁体   English   中英

Java可执行Jar类路径混乱

[英]Java executable jar classpath confusion

我已经阅读了有关可执行jar的答案,并在此处将当前路径添加到classpath中。

我将插件添加到pom.xml中,我检查了一下,实际上这一行已添加到MANIFEST.MF中:

Class-Path: .

现在根据log4j2文档,它将在当前类路径中查找log4j2.xml文件。

我的理解是,如果将log4j2.xml放置在与jar相同的目录中,并在我位于该目录中时执行jar,那么它将找到log4j2.xml。

但是,只有在添加一个

-Dlog4j.configurationFile=/path/to/file

到java命令。

我想念什么?

坦白说,似乎很容易忘记类路径,而只需在Java命令行中添加一堆-D术语即可。

我认为. 被评估为相对于java进程当前工作目录的当前目录(当操作系统启动进程时,会为它们提供一个工作目录)。 通过检查程序中的系统属性user.dir ,可以查看运行程序的JVM的工作目录。

# current directory is /home/rick
$pwd
/home/rick
# the code archive is not in the current wd
$ls /home/rick/myapps
app.jar
# the conf file is
$ls .
log4j2.xml
# This will work as expected
$java -jar /home/rick/myapps/app.jar

严格来说,JAR甚至不需要在您的文件系统上:例如,可以从网络上下载JAR并将其提取到内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM