1

Jar2EXEを使用して、JavaがインストールされていないWindowsで実行されるEXEファイルを生成しています。Javaデスクトップアプリケーションでは、専用のFTPサーバーにファイルをアップロードする必要があります。ファイルは、Jarが実行されているのと同じディレクトリにあります。私はjarの現在のパスを取得するためのいくつかのプローブを持っています、そして私はこの行でこの問題を解決します:

pathToFile = new File(FtpUploder.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent()+"\\File.doc"; 

jar + File.docを同じディレクトリのどこにでも設定し、その動作を確認します。

exeを生成するときの問題、前の行はNullpointerExceptionをスローし、次のようにtry/catchで囲みました。

 try{
         pathToFile = new File(FtpUploder.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent()+"\\File.doc"; 
         }
         catch(NullPointerException e)
         {
             pathToFile = "C:\\File.doc";
             System.out.println("path is null ! lets see the new path : pathToFile ="+pathToFile );
         }

ファイルが「C:\ File.doc」から正常にアップロードされるという奇妙な問題がありますが、動的パスを設定するとなぜそれが機能しないのですか?

PS:助けていただければ幸いです(英語でごめんなさい)。

4

1 に答える 1

2

生成されたexeファイル内で、を呼び出すだけSystem.getProperty("application.home")で、生成されたexeファイルのパスを取得できます。

「概要」のhttp://www.jar2exe.com/createdexe/integrateを参照してください。

于 2012-12-13T14:13:47.363 に答える