4

在带有 Gnome 的 Ubuntu Linux 上,通过在 Gnomes 文件浏览器中双击 jar 文件来运行我的 Swing 应用程序会导致错误,因为找不到通过 Java 插件框架(位于子目录中)动态加载的所需库。

正如我的可执行 jar 的清单文件中所述,框架本身的基本库已正确解析。但是,一旦框架启动,就找不到插件(甚至没有指定我的平台的插件)。

通过从终端启动应用程序

java -jar myjar.jar

就像一个魅力,广告确实通过双击一个shell脚本来运行应用程序。

但是,我想避免使用终端窗口。(我是一个 Windows 人,也许它不会像它惹恼那些在 Windows 上的人一样惹恼 linux 人。)

这个问题可以在多个 Linux 系统中重现。我需要做些什么来让 Java 正确解析库吗?

4

5 回答 5

2

我相信如果您向 jar 添加一个 META-INF/MANIFEST.MF 文件,其中包含“Classpath:”属性,其值指定您需要的 jar 的相对路径(我不确定它们是空格还是逗号分隔),这可能有效。

于 2008-11-04T16:49:31.637 回答
1

您可能需要检查:commons launcher。它会给你一个简单的可执行文件,可以用来做各种启动准备(包括设置类路径等)。很可能这对您的问题来说是多余的,但是您可以尝试一下(我会在您的情况下尝试它,只是因为我讨厌脚本)。

于 2008-11-04T18:37:21.420 回答
0

正如大卫建议的那样,您可以Class-Path在 jar 中添加 manifest 属性以获得更多jar 清单,Class-Path

于 2008-11-04T17:26:13.560 回答
0

Java 在其类路径中按顺序加载 jar,即 jar1:jar2:jar3... 大多数 Java 应用程序都附带某种脚本,通过指定类路径和应用程序需要的 jar 列表来设置所有这些。

您想要做的事情可能不是非常可取的,因为这意味着全局指定要随每个 java 应用程序加载的 jar 集合,并且您可能会与应用程序附带的任何库产生冲突。

这不是一个真正的问题,最简单的解决方案可能是组合一个小的 shell 脚本启动器。

于 2008-11-04T16:36:09.307 回答
0

您可以编写一个 shell 脚本来启动,这就是您调用或创建启动器的内容。这是有关如何在多个平台上执行此操作的快速“教程”。

http://java.sys-con.com/node/37130

下面是 Eclipse 的做法。可能会给你一些想法:

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/launcher.html

祝你好运!

于 2008-11-04T17:00:48.400 回答