7

私はEclipseを使用しており、log4j.propertiesをプロジェクトディレクトリに配置しており、呼び出してアクセスします

PropertyConfigurator.configure("log4j.properties");

これは Eclipse では問題なく動作しますが、プロジェクトを実行可能な Jar として抽出して別のマシンで実行すると、log4j.properties が見つからないというエラーが表示されます。これに対する解決策は何ですか?

4

2 に答える 2

7

何が起こっていますか

PropertyConfigurator.configure(String)ファイルシステムからファイルをロードして読み取ります。プロパティ ファイルはプロジェクト ディレクトリにあります。これは、Eclipse から実行する場合の「現在の作業ディレクトリ」になります。

すべてを jar にパッケージ化して展開すると、クラス ファイルと「リソース」のみが jar に配置されます。リソースは、ソース ツリーの下にある非 Java ファイルです。

jar ファイルを別のマシンにコピーすると、プロパティ ファイルはなくなります。

ソリューション

プロパティ ファイルはリソースではないため、個別に移動する必要があります。そのコピーをファイル システムに配置して (編集、更新などできるように)、ターゲット ホストの現在の作業ディレクトリに配置します。実行時環境。

/tmp/log4j.properties や ~/.myproject/log4j.properties など、ファイル システムの共通領域に配置することを検討してください。それに応じて、コードを調整してそれを探す必要があります。

プロパティ ファイルをソース ツリーのルート (デフォルトでは /src) にコピーします。その後、jar にパッケージ化する必要があります。jar ファイル内のデータをリソースとしてロードします: PropertyConfigurator.configure(getClass().getResourceAsStream()).

この場合、単にファイルを編集してロギング設定を調整することはできません。

多くの場合、プロパティー・ファイルがファイル・システム上にあるかどうかを判別するロジックが作成されます。そうでない場合は、このメカニズムを介して jar からデフォルトをロードします。

于 2012-08-12T02:10:03.500 に答える
0
PropertyConfigurator.configure(ABC.class.getResourceAsStream("log4j.properties")) 

私は正しく機能しましたが、基本的にはLog4jプロパティファイルをソースコードフォルダー(Javaクラスの隣)に配置する必要があります。または、外部に配置してgetResourceAsStream()メソッドに適切なパスを指定することもできます

于 2016-01-20T23:38:53.313 に答える