gpt4 book ai didi

java - 从 Windows 为 Java 创建 native OSX 可执行文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:56 25 4
gpt4 key购买 nike

我有一个用 Java 编写的程序,我想为其提供 native 风格的包装器。我的目标平台是 OSX、Windows 和 Linux。

我现在让 Windows 和 Linux 运行“足够好”。如果能提供一个 windows 安装程序、一个 linux rpm 和一个 linux .deb 就好了,但是现在我对我在这两个平台上提供给用户的软件包比较满意。我认为它相对直观,感觉原生且易于使用。

Windows

  • 我使用 launch4j 创建 native 可执行文件。
  • 我将 native 可执行文件、jar、剥离的 JRE 和资源文件打包为 .zip
  • 用户下载 zip,解压里面的文件夹,然后双击可执行文件。

虽然此方法没有安装程序,但我觉得它“足够原生”。

对于 Linux

  • 我有一个简单的 C++ 程序作为 native 32 位可执行文件,它以我的 jar 文件为目标启动 java。
  • 我将 native 可执行文件、jar、剥离的 JRE 和资源文件打包到 .tar.gz 中
  • 用户下载 .tar.gz,解压缩其中的文件夹,然后双击可执行文件(或从控制台调用它)。

虽然我认为通过 .rpms 和 .debs 分发并为至少 KDE 和 gnome 提供 native 图标支持会很好,但我暂时也对这个结果感到满意。

这是 native 可执行代码,供任何感兴趣的人使用。

/*Compile this on a linux machine to create a local nix executable
g++ -m32 -o executable-name this-file-name.cpp
-m32 forces 32 bit mode, which should help compatibility
*/

#include <stdio.h>
#include <cstdlib>

int main() {

int result = system( "java -jar TARGET_JAR.jar 2> /dev/null > /dev/null " );

if ( result != 0 ) {
printf ( "PROGRAM_NAME requires Java, but Java isn't in your path. Please make sure Java is installed and 'java' is visible in your path. Once you've done that, please run this executable to run PROGRAM_NAME!\n" );
}
}

我打算为即将发布的版本修改它以也使用嵌入式 jre,但这是一个微不足道的变化。

对于 OSX

我还没有一个工作系统。这是我想要的:

  • 用户下载一个 .dmg 文件,其中包含一个 .app。
  • 我希望 .app 能够:
    • 拥有嵌入式 JRE
    • 可双击
    • 可以使用 ANT 自动构建。

我之前创建此应用程序的尝试惨遭失败。我试过:

  • Appbundler:我无法让示例正常工作。我相信问题的根源是在 Windows 环境中工作,但也许我只是做错了。

  • Rolling my own .app :这失败了,正如您在线程中看到的那样。

  • javapackager(包含在 java 8 中):我同样无法让它工作。由于它是一个新工具,因此在野外的示例很少,而且该工具似乎不成熟并且专注于 webstart;我在尝试创建 native Windows 程序包时得到的 Windows 安装程序是原始的,我无法让它包含其他非 jar 资源。

  • webstart:我不想要 .jnlps。我不能有图标或嵌入式 jres。

我觉得应该有一种简单的方法来推出我自己的 .app。据我所知,应用程序只是具有特殊结构和 Info.plist 的目录。

但是,我愿意接受任何有效的建议。最后,只要我得到一个在 OSX 上感觉原生并且可以用 ANT 自动化的包,我就会非常高兴。

谢谢!

最佳答案

您需要一台安装了 Xcode 的 Mac 计算机才能执行此操作。

关于java - 从 Windows 为 Java 创建 native OSX 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29961174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com