双击vs java -jar MyJar.jar

时间:2013-07-11 21:36:54

标签: java jar double-click

我有一个.jar文件,当我从命令提示符通过java -jar MyJar.jar运行它时,它工作正常。但是双击它不会。双击正确启动程序,但内部的某些东西不起作用。

为了试图弄清楚自己出了什么问题:双击runnable .jar与从命令行运行它有什么区别?

2 个答案:

答案 0 :(得分:2)

执行程序很重要,可以根据执行方式而改变。

您可以使用类似......

之类的东西来测试
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,则输出

enter image description here

如果我将目录更改为/Volumes/Disk02/DevWork/personal/java/projects/wip/StackOverflow/WhereAmI并运行java -jar dist/WhereAmI.jar则输出

enter image description here

执行上下文已更改。当您双击Jar并且它取决于系统时,会发生同样的事情。如果它是一个捷径或实际的Jar也会很重要。

这意味着如果您依赖任何相关资源,您必须确保Jar相对于您的资源在正确的位置执行。

如何实现这一点取决于操作系统

答案 1 :(得分:0)

双击将其作为“javaw -jar MyJar.jar”

运行