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:助けていただければ幸いです(英語でごめんなさい)。