0

元のプロジェクトには、txtファイルを読み取るJAVAファイルがあり、このプロジェクトのルートディレクトリの下にtxtファイルを配置しましたが、すべて問題ありません。

FileInputStream in = new FileInputStream("properties.txt");

ここで、このプロジェクトをjarとしてエクスポートし、新しいプロジェクトでは、このjarを外部ライブラリとして使用します。ここに質問があります。この外部ライブラリファイルを使用する場合、この新しいプロジェクトのどこにtxtファイルを配置する必要がありますか?

4

5 に答える 5

1

このファイルをプロジェクトと一緒に出荷し、変更が必要ない場合は、jarに追加して、ClassLoaderを介してそこからロードできますgetResourceAsStream

this.getClass().getResourceAsStream("properties.txt");

(技術的には、Javaクラスレルムに入るときはファイルではなく、リソースです)

于 2013-01-03T07:52:23.033 に答える
1

瓶の中とのようなものを使用してそれにアクセスします

getClass().getClassLoader().getResourceAsStream("properties.txt")
于 2013-01-03T07:52:37.077 に答える
0

Javaは、コマンドライン、環境変数、実行可能Java jarファイルのMANIFEST.MFでの設定など、クラスパスを設定するための多くのメカニズムを提供します。

これらはすべて、管理するのに首の痛みです。テクニックを知り、基本を理解するのは良いことです。しかし、実際にそれらを使用することは本当に悪い考えです。

あなたがすべきことはこれです。

まず、すべてのJavaライブラリをシステムの1か所に配置します。C:\ java \ libraries、または何でも。覚えている場所、すべてのプロジェクトからアクセスできる場所。

次に、バージョン番号を使用してすべてのライブラリに名前を付けます。log4j v1.4.1を使用している場合は、jarをライブラリ領域のlog4j-1.4.1ディレクトリに配置します。これにより、「無料」のライブラリバージョン管理が可能になります。

最後に、Antを学びます。単純なプロジェクトの場合、Antは単純です。Ant build.xmlファイルを使用して、アプリケーションをコンパイル、テスト、および実行します。

なんで?いくつかの理由。

セットアップが完了したら、プロジェクトに新しいライブラリを追加するのは簡単なので、build.xmlに行を追加します。Antを使用すると、単純な抽象化(すべてのライブラリが配置されている場所など)をより簡単に処理できます。

build.xmlは自己完結型です。たとえば、クラスパスに環境変数を使用する場合、あるプロジェクトのクラスパスは別のプロジェクトのクラスパスとは異なる場合があります。これは、環境変数をリセットすることを意味します。これを続けると、クラスパスが間違って設定されていたために「以前は機能していた」という「新しい問題」を罵倒することになります。build.xmlで一度設定し、忘れてください。

Antはポータブルです。Windows、Linux、Mac、AS / 400でも同じように動作し、シェルスクリプトやBATファイルとは異なり、Javaが実行されるすべての場所で動作します。

軽量です。単純なantスクリプトは単純です。彼らは彼らと一緒にたくさんの荷物を持ってこないので、あなたはいつでも彼らを恐ろしく複雑にすることができます。ビルドだけの場合は、Mavenよりもはるかに簡単です。

ほとんどのIDEはAntを直接サポートしています。IDEに戻ることにした場合、ほとんどの場合、最小限の構成でAntビルドファイルを使用できます。

これは、notepad++でクラスパスの問題を解決する方法です。クラスパスの設定は機能しますが、十分に進んでいないため、管理と管理が面倒です。Antの基本を学ぶことで、最小限の作業でさらに遠くまで行くことができます。

于 2013-01-03T07:54:12.863 に答える
0

ファイルはクラスパスのルートにある必要があります。

于 2013-01-03T07:52:35.067 に答える
0

ファイルをアプリケーションの「作業ディレクトリ」に配置します。これは、アプリケーションが開始されるディレクトリを意味します。

「構成ファイルは作業ディレクトリまたは作業ディレクトリ/config内に存在する必要があります」などの規則があり、次のような方法よりも、たとえばシステムプロパティを使用してこれを上書きする方法を提供する必要があります。

getClass().getClassLoader().getResourceAsStream(System.getProperty("configuration.file.path","properties.txt"))
于 2013-01-03T07:59:01.017 に答える