我有一个.jar文件,当我从命令提示符通过java -jar MyJar.jar运行它时,它工作正常。但是双击它不会。双击正确启动程序,但内部的某些东西不起作用。
为了试图弄清楚自己出了什么问题:双击runnable .jar与从命令行运行它有什么区别?
答案 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
,则输出
如果我将目录更改为/Volumes/Disk02/DevWork/personal/java/projects/wip/StackOverflow/WhereAmI
并运行java -jar dist/WhereAmI.jar
则输出
执行上下文已更改。当您双击Jar并且它取决于系统时,会发生同样的事情。如果它是一个捷径或实际的Jar也会很重要。
这意味着如果您依赖任何相关资源,您必须确保Jar相对于您的资源在正确的位置执行。
如何实现这一点取决于操作系统
答案 1 :(得分:0)
双击将其作为“javaw -jar MyJar.jar”
运行