我正在使用基于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)
答案 0 :(得分:5)
根据用于调用程序的方法,当前工作目录可能会更改。当通过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
。因此,使用两种方法(当归档位于~
时)时路径可能相同,但不一定 - 尝试调试/重现异常行为时遇到困难。