如何使Java从Gnome的当前目录执行jar?

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

正如我的可执行jar清单文件中所述,框架本身的基础库已经正确parsing。 但是,一旦框架启动,没有插件(甚至没有指定我的平台的插件)被发现。

通过terminal从terminal启动应用程序

 java -jar myjar.jar

像魅力一样工作,广告通过双击shell脚本来运行应用程序。

但是,我想避免一个terminal窗口。 (我是一个Windows的人,也许它不会惹恼Linux的人,因为它惹恼了那些在Windows上)。

这个问题在多个Linux系统中是可重现的。 有什么我需要做的,所以Javaparsing正确的库?

我相信,如果你添加到一个META-INF / MANIFEST.MF文件包含一个“Classpath:”属性,与一个值指定相对路径到你需要的罐子(我不知道是否他们是空格或逗号分隔),那可能工作。

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

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

你想要做的可能不是非常明智的,因为它意味着全局指定你想要加载每个Java应用程序的jar集合,并且你可能会与应用程序随附的任何库产生冲突。

这不是一个真正的问题,最简单的解决方案可能是把一个小脚本启动器放在一起。

要么你可以写一个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

祝你好运!

由于David建议您可以在您的jar中添加Class-Path清单属性来获取更多的jar清单,Class-Path