使用标志从批处理运行java应用程序

时间:2015-04-15 08:00:48

标签: java batch-file log4j

我里面有一个类my.package.Foo的hava jar,包含main方法。

我将Log4j配置为日志记录系统。

我希望在捕获异常时打印完整堆栈跟踪,但是我读到了这个主题:log4j not printing the stacktrace for exceptions 而且我认为我需要使用-XX:-OmitStackTraceInFastThrow标志。

所以我试图用这样的命令行调用我的应用程序:

java -XX:-OmitStackTraceInFastThrow -cp %JAR_LOCATION:% my.package.Foo

但是我仍然缺少堆栈跟踪,我只收到短消息。

这是我的log4j配置:

log4j.rootLogger=INFO, CONSOLE, FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=log.txt
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{HH:mm:ss.SSS} %-4p %c{2}.%m%n
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-4p %c{2}.%m%n

我缺少什么?

1 个答案:

答案 0 :(得分:0)

试试这样:

set JAR_LOCATION=c:\any folder with spaces\jar
java -XX:-OmitStackTraceInFastThrow -cp "%JAR_LOCATION:~%" my.package.Foo

你必须从%JAR_LOCATION:%中删除:或者使用%JAR_LOCATION:〜%来取消引用它,并直接在JAVA命令中引用它,因为路径可能包含空格。