内容简介:翻译自:https://stackoverflow.com/questions/28574905/specifying-log4j2-configuration-file-when-using-executable-jar本文转载自:https://codeday.me/bug/20190111/516686.html,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。
使用可执行JAR文件时,我无法指定Log4j2配置文件位置.如果我将所有JAR分开,它可以正常工作,但是当我尝试将它们组合成一个可执行的JAR文件时,由于某种原因,没有从命令行中获取log4j2.xml文件.
我已经尝试了这两种指定位置的方法:
java -Djava.libary.path=..\bin -cp ..\config -jar MyApplication.jar
java -Djava.libary.path=..\bin -Dlog4j.configurationFile=..\config\log4j2.xml -jar MyApplication.jar
这些都没有奏效.我还尝试将包含配置文件的目录添加到JAR清单文件中的类路径中:
Manifest-Version: 1.0 Ant-Version: Apache Ant 1.9.2 Created-By: 1.7.0_21-b11 (Oracle Corporation) Main-Class: com.abc.MyApplication Class-Path: ../config/
我也没有成功使用这种方法.我有什么想法可能做错了吗?
在此先感谢您的帮助!
编辑
啊,我相信我误解了这个问题.最初,这是我在命令行输出中看到的错误:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
但是在我改变事物的某个时刻,错误消息发生了变化而我没有意识到这一点:
ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
所以我想到的是,即使我正在构建的可执行JAR包含其中的log4j-core-2.1.jar和log4j-api-2.1.jar JAR以及MANIFEST文件的类路径,也存在问题.我编写我的ant文件以将库组合到我正在创建的单个JAR中的方式是成功复制目录和类文件,但由于某种原因没有复制其他类型,这显然也是必要的(例如Log4j-config .xsd,Log4j-events.dtd等).
为了解决这个问题,我改变了我在Ant构建文件中合并JAR的方式:
<jar destfile="${dist}/${jarName}" basedir="${classes}" excludes=".svn"> <!-- Merge this JAR with all the JARs in the lib directory, so that
we are only creating one distribution JAR that includes all the
libraries that you need. --> <fileset dir="${classes}" includes="**/*.class" /> <zipgroupfileset dir="${lib}" includes="**/*.jar" /> <!\-\- Specify the manifest file of the JAR --> <manifest> <attribute name="Main-Class" value="com.abc.MyApplication"/> <attribute name="Class-Path" value=". ${manifest.classpath}"/> </manifest> </jar>
这解决了问题并将所有文件从JAR复制到我新创建的JAR中.
解决此问题后,我上面发布的第二个命令用于指定配置文件的位置. (如下面的@rewolf所述,第一个命令不起作用,因为JAR的MANIFEST中指定的类路径会覆盖命令行上指定的任何类路径.
感谢您的回复,他们肯定帮助我找到了解决错误的正确道路.
Java文档中没有很好解释的东西是,如果你使用的是可执行的Jar,它只会使用Manifest文件中指定的Class-Path.它不会侦听-cp或–classpath参数.
-Dlog4j.configurationFile =目录/ file.xml
绝对应该工作.考虑到你的斜线方向,我假设你在Windows上运行.您确定从正确的相对目录运行它吗?
更新
我刚刚在Windows中尝试过没有问题.我使用了以下清单:
Manifest-Version: 1.0 Built-By: andrew.flower Build-Jdk: 1.7.0_67 Class-Path: lib/log4j-api-2.1.jar lib/log4j-core-2.1.jar Created-By: Apache Maven 3.2.3 Main-Class: com.andrew_flower.test.Log4jTest Archiver-Version: Plexus Archiver
Log4j2 jar位于lib /目录中,log4j2.xml位于conf /目录中.我执行了以下命令,它成功找到了配置.
java -Dlog4j.configurationFile=conf\log4j2.xml -jar log4j2test1-1.0-SNAPSHOT.jar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
关注我们,获取更多IT资讯^_^
猜你喜欢:
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
原网址: 访问
创建于: 2021-09-01 16:16:55
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论