命令提示符下的 log4j.properties 问题

Issue with log4j.properties on the command propmt

我正在尝试为 Windows (*.bat) 创建批处理文件以执行 Java 应用程序。除了记录器,我已经设置了所有内容。我已经调用 BasicConfigurator.configure() 并将文件 log4j.properties 放在项目的根目录下,它在 IDE (Eclipse) 中运行良好,但是当我尝试通过批处理执行相同操作时文件,它不起作用。

我已经尝试将文件移动到其他路径,但没有用,我不知道还能尝试什么。

eInvoice.bat(CLASSPATH 假设是之前定义的)

java -Xmx500m -cp %CLASSPATH% com.mycompany.einvoice.InvoiceSender -Dlog4j.configuration=log4j.properties

log4j.properties

# Root logger option
log4j.rootLogger=INFO, file 

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=AplFacturae.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

我不确定这是否对某人有用,但我找到了问题的根源,它与参数的顺序有关。 main class 必须是最后一个参数,除非它有参数。所以我只是交换了最后两个参数,它开始工作了

java -Xmx500m -cp %CLASSPATH% -Dlog4j.configuration=log4j.properties com.mycompany.einvoice.InvoiceSender 

在我解决问题的那一刻,我意识到了原因。 main class 可以有参数,因此,我之前使用的 main class 的每个参数都属于 main class 而不是 Java.

public static void main (String[] args){
   ...
}