Parent class(*ch.qos.logback.core.FileAppender*):
...
protected String fileName = null;
public FileAppender() {
}
public void setFile(String file) {
if (file == null) {
fileName = file;
} else {
// Trim spaces from both ends. The users probably does not want
// trailing spaces in file names.
String val = file.trim();
fileName = val;
}
}
...
子供クラス:のJava:子1で親クラスから変数を初期化して保持されていないヌル
...
public class FileAppender<E> extends ch.qos.logback.core.FileAppender<E> {
private FileResourceManager frm = new FileResourceManager(fileName, tempDir, false, loggerFacade);
public void writeOut(E event) throws IOException {
Object txId = null;
try {
frm.start();
txId = frm.generatedUniqueTxId();
frm.startTransaction(txId);
outputStream = frm.writeResource(txId, fileName, true);
outputStream.write(event.toString().getBytes());
frm.commitTransaction(txId);
}
catch (Exception e) {
...
}
}
問題がfileName
がこの行のfrm
にヌルとして渡されるということです。
private FileResourceManager frm = new FileResourceManager(fileName, tempDir, false, loggerFacade);
frm
インスタンスを作成するにはどうすればいいですか?nullなしfileName
親ですでに初期化されていますか?
'setFile'は質問に関連していませんが、どこからでも呼び出されるわけではありません。代わりに( 'new SomeClass(fileName)'で呼び出された)コンストラクタを文字列にするのがよいでしょう。 –
問題を示す短くて完全なプログラムを提供してください。現時点でどのクラスを持っているのかははっきりしていません。 –
@ジョン:私は投稿を編集して具体的なコードを挿入しましたが、そのアイデアは同じままです – sergionni