Java-What';双击和从终端运行打开.jar文件的区别是什么?

Java-What';双击和从终端运行打开.jar文件的区别是什么?,java,jar,terminal,Java,Jar,Terminal,我正在使用一个基于Java的应用程序(一个.jar文件)访问一个网站进行在线讨论。最近,我在双击(Mac和Ubuntu)运行应用程序和从终端运行java-jar client.jar之间遇到了一些奇怪的差别。当我通过双击打开客户端时,它将不允许我登录,而如果我从终端运行它,则一切正常 我知道描述可能太模糊了,但我只是想知道这两种运行.jar文件的方法之间是否有一般性的区别。谢谢 我的Java环境如下所示: $ java -version java version "1.7.0_17" Java(

我正在使用一个基于Java的应用程序(一个.jar文件)访问一个网站进行在线讨论。最近,我在双击(Mac和Ubuntu)运行应用程序和从终端运行
java-jar client.jar
之间遇到了一些奇怪的差别。当我通过双击打开客户端时,它将不允许我登录,而如果我从终端运行它,则一切正常

我知道描述可能太模糊了,但我只是想知道这两种运行.jar文件的方法之间是否有一般性的区别。谢谢

我的Java环境如下所示:

$ java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Server VM (build 23.7-b01, mixed mode)

根据用于调用程序的方法,当前工作目录可能会更改。通过
java-jar
运行时,工作目录由终端设置,很容易通过提示符识别。双击时,目录默认为用户的主目录。演示的快速测试:

public class TestWorkingDirectory { 
    public static void main(String[] args) {
        javax.swing.JOptionPane.showMessageDialog(
                null, System.getProperty("user.dir"));
    }
}

假设JAR位于
/home/test/Applications
中,它将在从终端运行时显示此路径。双击时,只需
/home/test
。因此,使用这两种方法时,路径可能是相同的(当归档文件位于
~
中时),但不一定是相同的-这在尝试调试/再现异常行为时是一个困难。

这实际上取决于操作系统在双击jar时的配置。我的配置是在winrar中打开它(我倾向于更频繁地打开JAR而不是运行JAR)。它配置为在我的计算机上使用Oracle Java 7运行时打开。所以这不应该是问题所在。客户端正确打开,界面显示良好。您看到的任何其他可能的配置问题?谢谢当您在终端中时,是否可能有一些登录脚本正在运行,因此您的路径或类路径不同,因此在这两种情况下操作环境也不同?或者,我不知道当你双击一个文件时Ubuntu或Mac是如何设置它们的工作目录的,但也许这是一个线索。你告诉我们当你双击时,什么事情不会发生(我假设你期望这种情况发生)。如果你还告诉我们发生了什么,这将很有帮助。基本上,在Ubuntu 14.04中,双击user.dir将其设置为/home/user,而不是jar的父目录,这是终端将要做的。请注意,在windows上双击将user.dir设置为jar的父目录,这更直观,终端的行为也更直观。Ubuntu 14.04上的双击行为可能是一个错误,因为更直观的是,当前目录应该是jar目录的父目录。这就是在windows 10上实现双击的方式。这允许双击以利用相对路径。是否可以将目录从主目录更改为文件所在的位置?