使用可执行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的方式:

excludes=".svn">

这解决了问题并将所有文件从JAR复制到我新创建的JAR中.

解决此问题后,我上面发布的第二个命令用于指定配置文件的位置. (如下面的@rewolf所述,第一个命令不起作用,因为JAR的MANIFEST中指定的类路径会覆盖命令行上指定的任何类路径.

感谢您的回复,他们肯定帮助我找到了解决错误的正确道路.

java -cp 配置文件目录_java – 使用可执行JAR时指定Log4j2配置文件相关推荐

  1. java 生产配置文件管理_JAVA基础——使用配置文件

    一. 前言 日常我们做项目中,我们经常会遇到这样的情况:由于开发环境和生产环境的不同,项目部署在生产环境之前,有些参数我们并不知道如何取值.例如:数据库链接设定,我们在部署生产环境之前,无法预知客户的 ...

  2. java环境配置步骤_java环境配置及安装的详细步骤

    java环境配置及安装的详细步骤 发布时间:2020-04-22 14:15:59 来源:亿速云 阅读:141 作者:小新 今天小编给大家分享的是java环境配置及安装的详细步骤,相信很多人都不太了解 ...

  3. java jar 可执行_java基础-可执行jar包

    1 简介 大家都知道java项目可以打包成一个可执行的jar包,当我们指定程序的入口main后,可以利用 java -jar YourApp.jar 命令运行可执行jar.那么它需要什么条件才能运行呢 ...

  4. Gradle:执行命令时指定 JDK 版本

    应用场景 在命令行执行 Gradle 时使用的 Gradle 版本为系统环境变量中指定的 Gradle 版本,使用的 JDK 为系统环境变量 JAVA_HOME 指定的 JDK. 来自 Gradle ...

  5. java spring 配置词典_java之spring mvc之拦截器

    java之spring mvc之拦截器 1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的. 2 ...

  6. java中弹框命令_JAVA提权执行Windows指令

    1前言 **平台要求实现FTP账户同步.FTP账户同步分为两步,第一步将平台用户写入FTP服务器(FileZilla Server)配置文件中(Dom4J读写XML文件),第二部重启FTP服务(指令为 ...

  7. java ssh shell命令_java 通过ssh 执行命令

    java 里面的开源 ssh lib jsch 例子 JSch jSch = new JSch(); //设置JSch 的日志,可以看到具体日志信息 JSch.setLogger(new Logger ...

  8. java中thread实例_Java多线程并发执行demo代码实例

    主类:MultiThread,执行并发类 package java8test; import java.util.ArrayList; import java.util.List; import ja ...

  9. java中字节码_Java字节码执行图示

    ★ 查看具体的执行图示,需要先了解一下 java 线程执行的地方,Java 每一个线程执行字节码指令都是在 jvm 虚拟机栈中完成 " 1.JVM 虚拟机栈 每一条 JVM 线程都有自己私有 ...

  10. java如何配置环境_java如何配置环境变量

    展开全部 首先下载好jdk,直接双击就可以安装,安装比较简单,基本都是点62616964757a686964616fe78988e69d8331333365653832击"下一步" ...

最新文章

  1. 介绍下JSP如何进行自动刷新
  2. poj2756(高精度加减)
  3. javascript实战pdf_《TypeScript开发实战》总结
  4. Vue多页应用脚手架
  5. 计算机老师任课教师寄语,任课老师寄语大全
  6. php计算一段时间工作日,PHP计算8小时工作日的一半
  7. 用CONVERT命令转换FAT到NTFS,合适吗?
  8. Python学习笔记:初识Tushare
  9. 谷歌 .dev 顶级域名正式开放
  10. JVM分代垃圾回收策略的基础概念
  11. mysql自建云盘_使用nextcloud自建私人云盘
  12. 单片机跑马灯12种c语言程序设计,基于单片机多模式带音乐跑马灯设计附完整程序代码.doc...
  13. 程序化炒股软件有哪些?
  14. mysql好玩的代码_MySQL常用命令(1)
  15. java 打印 xps_使用Java 将PPT转换为PDF、XPS等格式
  16. 基于51单片机交通灯控制器(东西通行_南北通行_按键启动)
  17. ftp上传工具下载,八款中文绿色版ftp上传工具下载(ftp客户端)
  18. 自己拥有一台服务器可以做哪些很酷的事情?
  19. 从零开始写高性能的人脸识别服务器(二)
  20. Codeforces868F Yet Another MinimizationProblem

热门文章

  1. 在GlassFish中应用Hibernate
  2. 我对敏捷价值观和原则的理解 --待续
  3. Spring-BeanPostProcessor的执行顺序
  4. JVM监控及诊断工具命令行篇之jinfo
  5. Java排序之Comparable与Comparator详解
  6. JDK神坑:JAVA中Calendar的月份Month少1
  7. [Shell Programmin] ZSH
  8. 店铺淘宝双十一活动利润的快速量化。
  9. 所有浏览器的 CSS selectors 兼容性
  10. Iframe的基础应用——关于Iframe刷页问题的两种方法