【问题标题】:Executable JAR on Ubuntu (NetBeans)Ubuntu (NetBeans) 上的可执行 JAR
【发布时间】:2011-10-20 10:21:23
【问题描述】:

我正在 NetBeans 中编写一个简单的 Swing 应用程序,并且是第一次在 Ubuntu 机器上这样做。

众所周知,NetBeans 会自动为“设置为主”的项目创建可执行 JAR。

在 Windows 上,您可以双击可执行 JAR,它会自动调用 JRE 并运行应用程序。在 Ubuntu 中,双击 .jar 文件会导致文件在存档管理器中打开。为了运行我的 JAR,我要么必须右键单击它并选择“使用 OpenJDK Java 6 运行时打开”,要么从命令行启动它。

从命令行我没有遇到任何问题。 但是,当我尝试从右键菜单启动它时,我收到一条错误消息:

文件 MySwingApp.jar 未标记为可执行文件...

所以我有两个问题:

  1. 如何将其设置为可执行文件?这是我可以在 NB 内做的事情还是我必须使用外壳?如果我必须通过 shell 设置权限,这是否与 NB 的自动生成 **executable** JARS 的政策冲突?无论如何我会使用什么命令来翻转可执行位?!?!
  2. 这只是 Linux 的一个小问题吗?我想将此 JAR 发送给运行 Windows 的朋友,我希望他们能够双击它并启动程序

感谢您提供任何有用的建议!

【问题讨论】:

  • “标记为可执行”意味着您需要在其上添加一个 x 位。在终端使用“chmod +x MySwingApp.jar” cd'ing 到它的位置。
  • 谢谢!但是我的其他问题呢?这是我每次编译或创建的每个 JAR 都必须做的事情吗?我给我 JAR 的 Windows 用户呢?
  • 如果你将你的jar文件标记为可执行文件,你可以双击它并运行它吗?
  • 不双击它仍然会打开存档管理器,但现在我可以右键单击它并选择使用 JRE 打开它,并且不会引发错误...**然而**在我进行干净构建(创建一个新的 JAR 文件)并尝试右键单击访问它的那一刻,我又回到了同样的问题,并且必须对 x-bit 进行 chmod ...
  • 这不是 Linux 打嗝。这就是 Unix 的工作方式。

标签: java linux netbeans ubuntu executable-jar


【解决方案1】:
  1. 您将需要手动调整构建过程,以使 jar 文件在 Netbeans 中标记为可执行文件。转到您的项目根目录并打开 build.xml。标头包含有关添加到构建过程的说明。有一个目标,“-post-jar”,在构建 jar 之后调用。您需要创建该目标并使用 Ant's chmod 任务来修改您的 jar。一旦你这样做了,每次你在该项目中创建一个 jar 文件时都会发生这种情况。

  2. 只要他安装了 JRE,它就会在你朋友的 Windows 机器上运行良好。

Here is a thread 关于在 Linux 中使用双击运行 jar。

【讨论】:

    【解决方案2】:

    您可以在 Ubuntu(和其他 Linux)上将 Java 当作原生二进制文件,这是内核的一个特性。您需要安装 binfmt-support 包,以便为内核提供以这种方式运行 java 的钩子。

    在 Ubuntu 中打开终端并运行:

    sudo apt-get install binfmt-support

    然后让你的 JAR 文件可执行

    chmod a+x yourjar.jar

    然后你可以像运行其他二进制文件一样运行你的 JAR 文件

    yourjar.jar

    【讨论】:

      【解决方案3】:

      Jar 文件不是一流的可执行文件,它们不会通过更改其可执行标志而神奇地变成可执行文件。

      如果你执行一个jar,你运行命令

       java -jar YOURJAR.jar ...
      

      同理,就好像你双击一个png文件,期望它在绘画程序中运行

       gimp YOUR.png
      

      您不需要将您的 png 设为可执行文件,它不会解决问题。

      相反,您必须告诉您的桌面环境,双击 jar 或 png 文件时要执行的操作,并且您必须在 Linux 上执行此操作,就像在 Windows 中执行此操作一样 - 也许 Windows 上的安装程序会执行此操作对你来说,因为通常只有操作系统 (Windows) 上的桌面环境 (Windows),但 Linux 有 Gnome、KDE、XFCE、LXDE、fluxbox 等等。

      它不太确定你想用它做什么。由于 jar 文件是一种特殊形式的打包 zip 文件,通常包含 Manifest 和类,Archivmanager 并不是一个错误的解决方案,显示存档内容比执行它更节省。

      将文件复制到 windows 无效。 Windows 甚至没有可执行标志,但你不应该摆弄它。您更改了桌面设置,这些设置无法移动到 Windows,而且您也不想这样做。

      如果您在 DE 中进行了正确设置,则无需反复告诉 Netbeans 或任何其他 IDE 如何处理 jar 文件。

      【讨论】:

        【解决方案4】:

        我浏览了互联网,发现了一篇文章,其中包含运行 jar 文件的完整步骤 http://mlartist.blogspot.in/2012/07/deployment-netbeans-project-in-linux.html

        【讨论】:

          【解决方案5】:

          Jar 文件基本上是一个 zip 文件,要创建可执行文件,您有几种不同的方法。最好的(在我看来)是使用 ant 来创建它。或者你可以简单地echo "Main-Class: YOUR.MAIN.CLASS" >> Manifest 然后通过jar -cmf Manifest JARFILENAME.jar INPUTFILES 创建你的jar 然后,让它在linux下可执行,右键单击它并单击属性。然后单击权限选项卡并检查execute。或者你可以是终端 bamf 和 cd 到 jar 目录和chmod +x JARFILE.jar 祝您好运!!

          【讨论】:

            猜你喜欢
            • 2023-03-15
            • 1970-01-01
            • 2018-08-16
            • 1970-01-01
            • 2013-08-20
            • 2011-11-15
            • 2017-11-30
            • 1970-01-01
            • 2017-03-01
            相关资源
            最近更新 更多