【问题标题】:Running java application from batch with flags使用标志从批处理运行java应用程序
【发布时间】:2015-06-21 02:07:34
【问题描述】:

我有一个带有 my.package.Foo 类的 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

我错过了什么?

【问题讨论】:

    标签: java batch-file log4j


    【解决方案1】:

    试试这样:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      相关资源
      最近更新 更多