当前位置: 首页 > 知识库问答 >
问题:

可执行jar找不到logback.xml文件

南门欣怡
2023-03-14

我有独立的应用程序,它绑定在可执行的JAR中。在可执行jar的清单文件中,有一个class-path条目,其中列出了所有依赖的jar(包括所有的日志实现jar)。这个可执行jar还包含logback.xml文件。

使用这种结构,当我使用简单的java-jar myapplication.jar命令运行应用程序时,应用程序在正确的日志记录下运行良好。但这里的主要问题是,要更改日志级别,需要打开jar文件,而我不能要求客户端这样做。所以我将logback.xml放在了jar外部,但现在所有日志记录都发生在控制台上。

我提到Logback找不到Logback.xml,即使它存在(在类路径上),这里提到的解决方案是将Logback.xml捆绑在一个单独的JAR中。但这个解决方案很糟糕。这样客户端就不能轻易更改日志级别。如何使它在JAR之外使用logback.xml。

我尝试在清单类路径条目中添加logback.xml以及其他依赖jar的条目,但没有成功。我的应用程序结构如下

+rootfolder
--myapplication.jar
--logback-classic-1.1.3.jar
--logback-core-1.1.3.jar
--slf4j-api-1.7.7.jar
--other-dependency.jar
--logback.xml

有人已经解决了这个问题吗?我不想在配置器中使用编程配置。当前的解决办法是使用选项-dlogback.configurationfile=logback.xml,但如何使它与out一起工作呢?

共有1个答案

赫连坚
2023-03-14

幸运的是,我找到了这个链接,其中有人面临一些不同的问题,但对他来说,它是工作良好的,当添加。(点)在清单的类路径项中。我用了同样的方法。因此,我不是将logback.xml文件作为类路径的一部分,而是简单地使用。而且奏效了。

 类似资料:
  • 问题内容: 我在程序中使用以下代码来加载属性文件: 该代码在Eclipse中运行良好。然后,将程序打包到一个名为MyProgram.jar的JAR中,然后运行它,第二行得到了NullPointerException。JAR不包含属性文件,它们都位于同一目录中。我正在使用Maven创建JAR。我该如何解决这个问题? 更新:我不想将属性文件添加到JAR中,因为它将在部署时创建。 问题答案: Balus

  • null 其中%classpath%是一个环境变量,它具有日志所需的.jar文件的路径,如: logback-access-1.1.2.jar logback-classic-1.1.2.jar logback-core-1.1.2.jar SLF4J-API-1.7.6.jar 这是我的logback.xml文件 \logback>java-cp.;%classpath%-dlogback.co

  • jar是用“meta-inf”文件夹中的清单文件创建的。清单文件(为了查看目的删除了类路径中的一些jar条目): 文件夹结构: 我正在命令提示符下使用'java-jar application.jar mypkg.main'。 有人能告诉我是什么造成的错误和如何解决它吗?

  • 问题内容: 我在安装psycopg2时遇到问题。我尝试执行以下操作时收到以下错误pip install psycopg2: 但是问题出在我身上PATH; 它运行没有任何问题: 我尝试将径添加到文件中,并使用从其网站(http://initd.org/psycopg/)下载的源文件进行构建,然后收到以下错误消息! 但实际上是那里!!! 这些错误使我感到困惑。有人可以帮忙吗? 顺便说一下,我sudo所

  • 你好,我有一个奇怪的问题。我正在用eclipse打包一个应用程序,以生成一个可执行的jar文件,当我运行它时,会出现错误“error cant find main class[…]”。 当我从命令行示例运行同一个包时 java-jarapp.jar 程序启动。 奇怪的是,只有在Java 7环境中编译的应用程序才会出现错误。 如果我将项目设置为java 6,一切都正常。 我应该做什么来运行Java

  • 我想知道如何在Eclipse中的源代码包(即/src/resources/images/或/resources/images/)内部或外部的资源文件夹中创建一个具有资源(图片、PDF)的可运行JAR。目前,我的资源在我的eclipse项目的source文件夹中,但我也在包中的它自己的文件夹中尝试过。该程序在eclipse中构建和执行得很好,但当我将其导出为可运行的jar时,在桌面上运行时,我总是得