【问题标题】:How to make Java execute jars from the current directory in Gnome?如何让 Java 从 Gnome 的当前目录执行 jars?
【发布时间】:2010-09-20 17:07:34
【问题描述】:

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

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

通过终端启动应用程序

java -jar myjar.jar

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

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

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

【问题讨论】:

    标签: java linux path gnome


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您可以编写一个 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

        祝你好运!

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

              猜你喜欢
              • 2021-01-07
              • 2023-03-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-04-09
              • 2012-01-10
              • 2012-07-18
              相关资源
              最近更新 更多