1

「Java Resource Files」を使い始めたばかりで、いくつか質問があります...

  1. 私は自分のプログラムを他の人に配布したいと思っていますが、JAR ファイルは最善の方法ではないと思います。私はおそらく「exeに変換する」ことでそれを行うでしょうが、これは良い習慣ですか?制限は何ですか?
  2. exe に変換した場合、リソース ファイルは保持されますか?
  3. 私は実際にリソースファイルを使用しようとしています。このファイルはテキスト ファイルで、特定のファイルのユーザー ディレクトリを保存するだけなので、プログラムを開くたびに設定する必要はありません。これはそれを行うための最良の方法ですか?
  4. コード自体でリソース ファイルをどのように参照しますか?

これが私がやったことです。新しいリソース ファイルを作成しました。私は Netbeans を使用しているので、ナビゲーターの [ファイル] タブの下にその場所が表示されます。次のようになります。

  • メインプロジェクト
    1. 建てる
    2. クラス
    3. 私のクラス
    4. 資力
      • ディレクトリ.txt

ここにアクセスしようとしている方法がありますが、デバッグするとnullに戻ります。

private void getPaths()//todo
{   

try
{
 InputStream is = getClass().getResourceAsStream("/resources/directories.txt");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) 
{
    System.out.println(line);
}
br.close();
isr.close();
is.close();
}
 catch(Exception e)
  {

    }
}
4

2 に答える 2

5

「EXE に変換する」は、「Jar ファイルを実行可能なコンテナにラップする」という手の込んだ言い方です。

「JARファイルは最善の方法ではないと思います」そうではありません。場合によっては、プログラムを起動するための OS 固有の手段を提供すると便利ですが、常に最適なソリューションとは限りません。

「制限は何ですか?」. まず第一に、あなたは自分自身を単一のプラットフォームに限定しています。Mac の場合、アプリケーションを「アプリ」バンドルにバンドルする必要があります。Linux の場合、ほとんどの人はコードを起動するためのスクリプトを提供していると思います。

また、自分自身を特定のビット深度に制限している可能性もあります。提供するのが x32 ビット実行可能ファイルだけの場合、x32 ビット環境内でのみ実行されます。これは問題ではないかもしれませんが、最初から使用可能なメモリを制限しています...

はい、一般的に、リソース ファイルは安全です。

通常、リソース ファイルは埋め込まれます。パート 3 で説明しているのは、構成ファイルに似ています。このファイルは、簡単に更新できるように、ファイル システム (exe/jar の外側) に保存する必要があります。

「コード自体でリソース ファイルをどのように参照しますか?」

埋め込みリソースの場合は、 を使用して開始する必要がありますgetClass().getResource(...)。構成ファイルについては、他のファイルと同じように...

また、Java プログラムをデプロイするための提案メカニズムに関するいくつかのアイデアをDeploymentで確認することもできます。

于 2012-10-29T01:38:11.627 に答える
0

Jar は配布に最適な形式です。exe に変換できますが、実行するには JVM をインストールする必要があります。JVM がインストールされていて、jar に適切な形式のマニフェスト ファイルがある場合、jar はダブルクリックで実行されます。

JVM、テキスト、バイナリ、XML、プロパティ ファイルなどから任意のファイルを開くことができます。

ユーザー設定を保存するには、プロパティ ファイルを使用することをお勧めします - http://www.mkyong.com/java/java-properties-file-examples/を参照してください。

于 2012-10-29T01:35:40.880 に答える