将.jar转换为适用于Windows,Linux和Mac的应用程序

我用Eclipse制作了一个Java应用程序(导出为* .jar ),我想将它导出为Windows( .exe ),Linux( 。? )和MAC( 。? )。 我没有任何Linux或MAC机器,所以我不知道每个机器需要什么扩展名文件。 所以我有几个问题:

  • 对于Windows,我使用Launch4j来创建我的* .exe文件,但是对于MAC和Linux是否有任何等价物?

  • 我的应用程序将选项保存到Windows注册表中(我使用了“JavaRegisrtyWrapper”库)。 是否有与MAC和Linux相同的“注册表”(以及如何在此处读取/写入信息)?

  • 当用户在下载后尝试启动* .exe文件时,是否可以避免Windows用户提醒“未知发行者”? (我会在MAC和Linux上遇到同样的问题吗?)。 我试图创建自己的证书,并用“signtool.exe”签署该文件,但没有奏效。

  • 谢谢 !

    编辑:在将* .jar文件转换为任何其他格式之前,我必须修改我的代码以获取用户的操作系统,以及每个案例的“文档”文件夹。 我认为os.name可以满足第一个请求,但是我可以在Windows,Linux和Mac上使用user.home + "Documents" (如果此文件夹存在...)?


    运行JAR应用程序的脚本

    在Linux和Mac OS上,您可以创建一个运行.jar文件的bash脚本:

    #!/bin/bash java -jar application.jar

    基于Unix的系统上的Windows注册表等效项

    在Linux和Mac Os上没有Windows注册等效项。 您可以将您的配置存储在ie文本文件中。 机器特定的配置通常存储在/ etc目录树中。

    这是一个类似的超级用户问题:https://superuser.com/questions/295635/linux-equivalent-of-windows-registry

    签署Windows EXE文件

    为了签署Windows exe文件,你可以尝试使用微软的Sign工具。

    这是一个类似的stackoverflow问题:签署一个Windows EXE文件


    Linux并不需要扩展。 通常二进制文件只是没有。 要将它们标记为可执行文件,请在文件上设置+ x标志,这将授予文件执行权限。

    OSX也不一定有扩展。 如果你想在Mac上安装你的程序,它将被打包在一个文件夹中(在Mac上这些文件夹看起来不像文件夹,它们看起来像程序,但在其他操作系统上它们显示为文件夹),扩展名为.app

    Launch4j可以为您生成所有平台,Mac OSX,Linux和Windows的二进制文件。

    “警报”问题是因为您的应用程序未被签名。 签署申请意味着将其封存起来,因此之后不能修改(可以修改,但会破坏封条)。 在OSX你可以得到一个开发者证书并使用codesign.appcodesign -s "certname"安装证书)。 在Linux上,您不会遇到此问题,因为程序通常不会被签名(程序包管理器的程序包通常会得到签名,安装后此信息会丢失)。

    在Windows上,您也可以购买证书。 在这样做并签署程序后,“警告”仍可能会出现在用户的设置中,但它会显示开发人员或公司名称而不是未知的(只有在未签名或未签名程序已修改签字)。


    只需运行它:java -jar [你的jar文件]

    或者把它放到脚本文件中,如:myscript.sh设置执行权限:

    > chmod ugo+x myscript
    

    示例脚本:

    #!/bin/bash
    $JAVA_HOME/bin/java -jar [jarfile]
    

    然后运行./myscript.sh

    链接地址: http://www.djcxy.com/p/34959.html

    上一篇: Convert .jar to an application for Windows, Linux & Mac

    下一篇: Flowtype "Not covered by Flow" on object property chains