2014-04-12 60 views
0

我可以得到日誌寫入一個文件時,我在一個程序中運行中得到log4j的輸出。但是在製作程序的jar文件並使用ProcessBuilder運行該jar文件後,它確實會生成該文件,但它不會寫入任何內容。任何幫助表示讚賞。如何從一個jar文件

這裏是屬性文件

log4j.rootLogger=fatal,CONSOLE,R 

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 

log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=H://decompilerDirectory//logs/testlog.log 
log4j.appender.R.MaxFileSize=60000KB 
log4j.appender.R.MaxBackupIndex=15 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d - %c - %p - %m%n 

我這是怎麼運行的程序

ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Java\\jdk1.7.0_13\\bin\\javaw.exe", "-jar", "ta.jar", filePath); 

Process p = pb.start(); 
p.waitFor(); 
+0

您是否在jar的清單文件中設置了主類? http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html 您是否嘗試過使用'java.exe'而不是'javaw.exe'? 您是否先在命令行中嘗試過您的命令,然後看看會發生什麼? –

+0

是的。我有主要功能。 (jar)程序實際上是先反編譯文件然後記錄。 jar文件成功反編譯並生成反編譯的文件。但它沒有寫入日誌。 – Junaid

+0

這不是關於主要方法,而是關於主要類。檢查我給你的鏈接。如果你想從命令行運行一個jar文件,你需要在它的manifest文件中設置它的main-class,否則,指定你想要執行它的類的主函數。例如:'Java的罐子JAR文件,name.jar com.yourcompany.yourclass主法論點 - spearated與 - spaces' –

回答

1

已經設置您的main-class JAR的manifest文件?

這不是關於主要方法,而是關於主要類。檢查我給你的鏈接。如果你想從命令行運行一個jar文件,你需要在它的manifest文件中設置它的main-class,否則,指定你想要執行它的類的主函數。

java -jar jar-file-name.jar com.yourcompany.yourclass main-method-arguments-spearated-with-spaces 
相關問題