6

ファイルが.jarあり、コマンド プロンプトから を介して実行すると、java -jar MyJar.jar正常に動作します。ただし、ダブルクリックはしません。ダブルクリックするとプログラムは正しく起動しますが、内部の何かが機能しません。

自分で何が問題なのかを理解しようとする目的で: 実行可能ファイルをダブルクリックする.jarこととコマンドラインから実行することの違いは何ですか?

4

2 に答える 2

0

ダブルクリックすると、「javaw -jar MyJar.jar」として実行されます

于 2013-07-11T21:41:51.550 に答える
0

プログラムが実行される場所は重要であり、実行方法によって変わる可能性があります。

次のようなものを使用してこれをテストできます...

import java.awt.EventQueue;
import java.awt.HeadlessException;
import java.io.File;
import java.io.IOException;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class WhereAmI {

    public static void main(String[] args) {
        new WhereAmI();
    }

    public WhereAmI() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                try {
                    String path = new File(".").getCanonicalPath();
                    JOptionPane.showMessageDialog(null, "I was started in " + path);
                } catch (IOException exp) {
                    exp.printStackTrace();
                }

            }
        });
    }

}

例えば。コンパイルすると、Jar は次の場所に存在します。/Volumes/Disk02/DevWork/personal/java/projects/wip/StackOverflow/WhereAmI/dist

ディレクトリをこの場所に変更して実行するjava -jar WhereAmI.jarと、出力が表示されます

ここに画像の説明を入力

ディレクトリを変更し/Volumes/Disk02/DevWork/personal/java/projects/wip/StackOverflow/WhereAmIて実行するjava -jar dist/WhereAmI.jarと、出力されます

ここに画像の説明を入力

実行コンテキストが変更されました。Jar をダブルクリックすると同じことが起こり、システムに依存します。それがショートカットか実際のJarかどうかも重要です。

これは、相対リソースに依存している場合、Jar がリソースに相対的な正しい場所で実行されていることを確認する必要があることを意味します。

これを達成する方法はOSに依存します

于 2013-07-11T22:10:06.690 に答える