2016-03-24 15 views
0

Netbeansで作成したCalculator.jarファイルがあります。絶対パスのないJavaからjarファイルを実行

Javaコードを使用してjarファイルを実行したいとします。 stackoverflowといくつかのドキュメントサイトを見て、私は次を試みた:

コードは正常に実行されますが、私の問題はファイルのパスに付属しています。プログラムを絶対パスなしで実行すると、実行されて終了しますが、電卓のGUIがポップアップすることはありません。絶対パスで実行すると、GUIが期待通りにポップアップします。

ソースコードと同じ場所にjarファイルがあります。私は、絶対パスなしでCalculator.jarを置くだけでいいと思っていました。それはうまくいかないようです。

絶対パスを使用する必要がないように、どのようにjarファイルを格納できるか知っていますか?

編集: また、jarFilesという名前のプロジェクト内に別のパッケージを作成して、パスjarFiles\Calculator.jarを試しました。それはどちらもうまくいかなかった。私は、デフォルトのパスについて何か誤解していると思う/私はコ​​マンドを呼び出すときにcmdがデフォルトで使用しているパス。私は確信していません。

事前にアドバイスをいただきありがとうございます。私はあなたが抱えている問題は、あなたが

public static void main (String [] args){ 
    Runtime rt = Runtime.getRuntime(); 
    Process pr = rt.exec("java -jar \\Calculator.jar"); 
    pr.waitFor(); 
} 

をしようとすると、それはコンピュータのルートディレクトリに見えることであると考えてい

+0

「現在の作業ディレクトリ」は、プログラムを実行する直前に変更したディレクトリです。一部のIDEでは、クラスファイルに関連した特定のポイントに設定されることがあります。しかし、あなたはプログラムを書くときにこれに頼ることはできません。既知の点を基準にしてパスを解決するか、絶対パスを使用します。 – RealSkeptic

+0

しかし、私が "projectpackage \ src \ Calculator.jar"のようなものを書くとうまくいきません。私は技術的にその時点での相対的な経路を設定しています。または、「getWorkingDirectory」のような処理をしてファイルにアクセスする必要がありますか? – JustBlossom

+1

IDEからプログラムを実行するときに現在の作業ディレクトリが何であるかを知ることができます。コマンドラインから実行すると、ユーザーは好きな作業ディレクトリを設定できます。パスをパラメータ、環境変数として渡したり、既知のファイルを基準にして解決することができます。 – RealSkeptic

答えて

0

は、また、最後に忘れ引用符がありました。現在の作業ディレクトリにアクセスする方法は、単に\\を削除するだけです。ちょうどの場合に、jarファイルのパスを引用符で囲むこともできます。

public static void main (String [] args){ 
    Runtime rt = Runtime.getRuntime(); 
    Process pr = rt.exec("java -jar \"Calculator.jar\""); 
    pr.waitFor(); 
} 
+0

これはまさにあなたが探していたものかどうか分かりませんが、あなたのIDEが別の場所からjarファイルを実行しているようです。 – Dankrushen

+0

助けてくれてありがとうございました。私は自分の作業ディレクトリが別のものだったときには1つの場所だと思った。 – JustBlossom

関連する問題