2011-09-13 15 views
2

私は非常に奇妙な問題に陥っています。 NetBeansとIzPackを使ってグラフィカルインストールパッケージを準備する、比較的大きなJavaプロジェクトをWindows上で作業しています。 すべてが正常です、コンパイルされたインストーラが動作しているように見え、私のプログラムは 'C:\ Programs \ MyProject'フォルダにコピーされています。JAR実行ファイルがプログラムディレクトリにある場合、JAR実行ファイルは起動しません。

しかし、そのフォルダ内のmyproject.jarをダブルクリックすると、まったく起動しません。私は明らかにプロンプ​​トを開き、 'java -jar myproject.jar'とタイプしようとしましたが、何もエラーコードの行ではありません。 好奇心の事実は2つです:

  • 私は管理者権限でプロンプトを使用して、それを開いた場合、それはそこのIzPackによって作成された「uninstaller.jar」別のjarファイルは、あり、そしてそれはで動作する同じフォルダに
  • の作品ダブルクリック。

私のJARのJVMインストール、PATH/JAVA_HOME/...値、およびプロパティ - >セキュリティタブをダブルチェックしましたが、すべての種類のユーザーに対して実行/読み取り/書き込みの権限はOKです。アンインストーラと同じです。

だから何が問題なのですか?おかげ

答えて

2

これはほぼ確実にWindows VistaでUACとWindows 7によって引き起こされるあなたのプログラムは、おそらくそれがインストールされているのと同じディレクトリ内のデータファイルへの書き込みしようとしている

Windowsでは、正常に動作するプログラムは、ユーザーまたはすべてのユーザーのアプリケーションデータディレクトリに書き込みます。

このディレクトリの場所は、Windowsのバージョンによって異なります。

システムプロパティ "user.home"を使用して、データを格納する安全な場所を見つけることができます。

また、共有およびユーザープログラムデータフォルダの環境変数の一覧をhereから取得することもできます。

+0

はい、あなたは正しいです、私のプログラムは、HyperSQLデータベースファイルを読み書きします、そして、それは同じディレクトリにあります。私はこのリソースを "user.home"に入れようとします – TheUnexpected

+0

そして、もしそれらのリソースをC:\ ProgramDataディレクトリに入れたら?それはより良い方法だと思うが、izPack組み込み変数のそのフォルダに関する参照はありません。 – TheUnexpected

+0

@ alessandro.francesconi ProgramDataの場所を取得するために使用できるリンクを追加しました。実際のパスは使用されているWindowsのバージョンによって異なりますので、c:\ ProgramDataをハードコードしたくありません。 –