【发布时间】:2014-07-19 01:28:28
【问题描述】:
我在 java 中有 2 个不同的项目,我需要对它们执行以下操作: 在程序A中的某个按钮被按下后,程序B被加载并且程序A被关闭。 尽管两个项目都有共同的类和 dll,但我真的不想将所有内容合并到一个项目中。
我进行了一些搜索,发现一种可能的解决方案是使用以下代码示例从 .jar 加载 程序 B:
btnMyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Runtime.getRuntime().exec("java.exe -jar \\url\\ProgramB.jar");
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
我尝试了许多变体(例如,没有".exe"),并确保ProgramB.jar 位于其dll 的同一文件夹中,但似乎没有任何效果。
所以,我尝试直接(通过 Windows)打开ProgramB.jar,显然一切正常。
后来,我尝试通过cmd执行ProgramB.jar(因为我认为命令"java.exe -jar \\url\\ProgramB.jar"可以在上面执行)。
即使我设置了库路径(java -Djava.library.path=\\url\\ -jar \\url\\ProgramB.jar),每次都会抛出UnsatisfiedLinkError(X.dll->找不到依赖库)。
(注意:我暂时无法提供所有异常消息,因为我现在没有程序...)
无论如何,我不确定我做错了什么,但显然 dll 实现没有任何问题, 因为我能够至少执行一次程序。欢迎任何想法。
【问题讨论】:
-
抱歉编辑。现在好了!