3
propsdatabase = new Properties();
InputStream dbin = getClass().getResourceAsStream("/properties/database.properties");
propsdatabase.load(dbin);

「プロパティ」という名前のフォルダーにある「database.properties」という名前のプロパティ ファイルを使用して、データベース接続の詳細を読み取っています。ルートディレクトリのすぐ下。

jarがEclipseでエクスポートされたとき、コードは完全に正常に機能していました。

しかし、IntelliJ で Maven プロジェクトを使用して jar を取得しました。NUll ポインター例外をスローします。

dbin の値が NULL であるため (私も印刷して確認しました)。

ファイルを読み取るためのパスが認識されていないと結論付けます。

今 IntelliJ で問題ありません。

Eclipse で jar としてエクスポートを実行しているときに、jar にはプロパティ フォルダーが含まれていますが、IT が検出されません。助けてください

4

4 に答える 4

2

getResourceAsStreamnull を返す理由は、/properties/database.propertiesファイルが Maven クラスパスにないためです。

プロパティフォルダーをフォルダーの下に移動する/src/main/resourcesと、Maven が jar ファイルを作成するときに/properties/database.propertiesリソースが含まれ、NPE の取得が停止します。

于 2012-05-04T10:39:09.290 に答える
1

はい、getResourceAsStreamnull を返すことは間違いありません。あなたのjarファイルにファイルが含まれていないと思われます。実行してみてください:

jar tvf yourfile.jar

チェックする。次に、jar ファイルのビルド手順を確認します。ビルド ファイルを見ずに何が問題なのかを判断するのは難しいため、手順を確認したときに飛び出さない場合は、質問を編集してその情報を含めてください。

于 2012-05-04T10:36:54.437 に答える
0

Maven ビルド ステップには、jar にプロパティ ファイルが含まれていますか? 生成された jar ファイルを確認します。いつでも名前を変更し、最後に「.zip」を追加して開く方法がわからない場合。

于 2012-05-04T10:39:01.457 に答える
0

パスと FileInputStream を使用して、プロパティ ファイルの読み取りを試みることができます。

Properties properties = new Properties();
FileInputStream input = null;
try {
   input = new FileInputStream(new File(CONFIGURATION_FILE));
   properties.load(input);
}catch(...){...}
于 2012-05-04T10:55:42.647 に答える