2017-10-04 12 views
1

NetBeansを使用して作成したjava .jarファイルがあります。私はapache procrun(prunsrv.exe)を使用して、その.jarをWindowsサービスとしてインストールしています。 config.propertiesファイルからプロパティを取得するようにコードを修正しました。 私はconfig.propertiesが私の.jarファイルが常駐同じフォルダにファイルを追加、次のように 私のコードは次のとおりです。私のコードの最後の行にprunsrvサービスと外部プロパティファイル

Properties props = new Properties(); 
InputStream inputStream = MyService.class.getClassLoader().getResourceAsStream("config.properties"); 
props.load(inputStream); 

を私がしようとしたとき、私はNPEを取得しています私のサービスを開始する。私はこれがファイルが見つからないためだと仮定します。私も(私の.jarファイルが置かれている場所にサブフォルダ)「のlib」フォルダにconfig.propertiesをコピーしようとした

Class-Path: . 

次のように 私はMANIFEST.MFを変更しました。同じ結果。

私は次のようにサービスをインストールするバッチファイルで「PR_CLASSPATHを設定する」の行を変更:

set PR_CLASSPATH=MyService.jar;. 

まだ同じNPE。

サービスがインストールされたら、私のコードが自分のconfig.propertiesファイルを認識できるようにするにはどうすればよいですか?

おかげで、 レイモンド

答えて

1

は、これは私がこのような状況でリソースをロードするために使用するもので、ほとんどの時間を動作するようです:これはあなたのケースで役立ちます場合

public static InputStream getResourceAsStream(String path) { 
    return Thread.currentThread().getContextClassLoader().getResourceAsStream(path); 
} 

あなたは、チェックしてもらえますか?この問題を克服する

別の戦略は、私のコメントで説明したものです:

は、特定の絶対フォルダパスにコンフィギュレーションファイルをコピー(つまり、C:\テスト)とそのフォルダを指すようにクラスパスを変更します(PR_CLASSPATH = MyService.jar;; c:¥test) "

+0

同じ問題です。私はそのメソッドに "config.properties"を渡し、InputStreamはまだnullです。 –

+0

設定ファイルを特定の絶対パス(c:\ test)にコピーし、クラスパスをそのフォルダ(PR_CLASSPATH = MyService.jar ;; c:\ test)に変更することができます。そして再試行? –

+0

それはそうしました。私はそれを試して、それが働いた後、私は単に自分のルートの下に "resources"フォルダを作成し、それを私のCLASSPATHに追加しました。私の問題は、install.batの "set PR_CLASSPATH"と組み合わせてmanifest.mfを使用することだと思います。私は自分のmanifest.mfのClass Pathエントリを削除し、PR_CLASSPATHを修正して必要なものすべてを追加しました。 –

関連する問題