导出到可执行jar时出现问题。
我正在使用maven和slf4j和log4j
我的pom.xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
<scope>runtime</scope>
</dependency>
我在/ src / java / main中添加了一个log4j.xml(与生成的目标文件夹中的相同):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/media/dlm/log/dlm.log" />
<param name="Threshold" value="INFO" />
<param name="Append" value="false" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="1" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}:%L] %m %n" />
</layout>
</appender>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p [%c{1}:%L] %m %n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="FILE" />
</root>
</log4j:configuration>
但是当我从eclipse导出时,log4j.xml被更改为下一个:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/tmp/dlm/log4j.log" />
<param name="Threshold" value="INFO" />
<param name="Append" value="false" />
<param name="MaxFileSize" value="1MB" />
<param name="MaxBackupIndex" value="1" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %X{service} %X{user} [%c] %m%n" />
</layout>
</appender>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<param name="Threshold" value="ERROR" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %X{service} %X{user} [%c{1}] %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</root>
</log4j:configuration>
我尝试使用log4j.properties文件显示为here,但没有。
提前感谢您的回答。
答案 0 :(得分:0)
感谢Peter,我明白当使用eclipse运行aplicacition时,我正在使用eclipse选项而不是maven本身来构建我的应用程序。这就是log4j.xml可能改变的原因。下一个解决方案无法解决它为什么会发生,但解决问题并给我一个正确的方法来使用100%maven构建我的应用程序。
我只需要在我的pom.xml中添加一些新字段,以便使eclipse选项可能会自动添加。
1.-包含xml文件:
<build>
...
<!-- RECURSOS -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.fxml</include>
<include>log4j.xml</include>
</includes>
</resource>
</resources>
...
</build>
2.-可执行jar(我在同一个项目中有3个不同的主类):
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>${class.main}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
3.-添加配置文件以选择主类:
<profiles>
<!-- DLM ANALOG -->
<profile>
<id>dlmdesktopanalog</id>
<properties>
<class.main>cl.icpdas.dlm.desktop.fx.main.analog.DataLoggerAnalogManager</class.main>
</properties>
</profile>
<!-- DLM DIGITAL -->
<profile>
<id>dlmdesktopdigital</id>
<properties>
<class.main>cl.icpdas.dlm.desktop.fx.main.digital.DataLoggerDigitalManager</class.main>
</properties>
</profile>
<!-- DLM EXTRACTOR -->
<profile>
<id>dlmdesktopextractor</id>
<properties>
<class.main>cl.icpdas.dlm.desktop.fx.main.extractor.DataLoggerExtractorManager</class.main>
</properties>
</profile>
</profiles>
最后,我使用了下一个目标制作我的可执行jar。
mvn clean package assembly:single -e -P dlmdesktopanalog
无论如何,如果有人知道eclipse在创建一个可执行的jar时设置了log4j.xml和其他选项,或者什么是reasson,为什么它改变了log4j.xml,答案很好地作为评论。