我用Eclipse创建了一个Java应用程序(在 * .jar 中导出),我想将其导出为Windows( .exe ),Linux( 。?)和MAC(。?)。我不拥有任何Linux或MAC机器,所以我不知道每个机器需要什么扩展文件。所以我有几个问题:
对于Windows,我使用Launch4j来创建我的* .exe文件,但MAC和Linux是否有任何等价物?
我的应用程序将选项保存到Windows注册表中(我使用了" JavaRegisrtyWrapper "库)。有没有"注册表"相当于MAC和Linux(如何在那里读/写信息)?
是否可以避免Windows警报"未知发布者"用户在下载后尝试启动* .exe文件时? (我会在MAC和Linux上遇到同样的问题吗?)。我尝试创建自己的证书,并使用" signtool.exe"但它没有用。
谢谢!
编辑:在将* .jar文件转换为任何其他格式之前,我必须修改我的代码以获取用户的操作系统,以及"文档"每个案例的文件夹。我认为os.name
可以满足第一个请求,但是我可以将user.home + "Documents"
用于Windows,Linux和Linux吗? Mac(如果此文件夹存在...)?
答案 0 :(得分:3)
在Linux和Mac OS上,您可以创建一个运行.jar文件的bash脚本:
#!/bin/bash
java -jar application.jar
Linux和Mac Os上没有Windows注册等效项。您可以将配置存储在文本文件中。计算机专用配置通常存储在/ etc目录树中。
以下是类似的超级用户问题:https://superuser.com/questions/295635/linux-equivalent-of-windows-registry
要签署Windows exe文件,您可以尝试使用Microsoft's Sign Tool。
以下是类似的stackoverflow问题:Signing a Windows EXE file
答案 1 :(得分:0)
Linux并不一定有扩展名。通常二进制文件没有一个。要将它们标记为可执行文件,请在文件上设置+ x标志,这将授予文件执行权限。
OSX也没有必要的扩展名。如果你想在Mac上安装你的程序,它将打包在一个文件夹中(在mac上看起来像文件夹,它们看起来像程序,但在其他操作系统上显示为文件夹),扩展名为.app
。
Launch4j可以为所有平台,Mac OSX,Linux和Windows生成二进制文件。
“警告”问题是因为您的应用未签名。签署申请意味着将其密封,以便之后不能进行修改(可以修改,但会破坏密封)。在OSX上,您可以获得开发人员证书,并使用codesign
(已安装证书的.app
)上的codesign -s "certname"
。在Linux上你不会遇到这个问题,因为程序通常没有签名(包管理器的软件包通常会被签名,安装后这些信息会丢失)。
在Windows上,您还可以购买证书。执行此操作并签署您的程序后,“警报”可能仍会根据用户的设置进行,但它会显示开发人员或公司名称而不是未知(只有未签名或已签名的程序在以后修改后才会显示未知)签名)。
答案 2 :(得分:0)
运行它:java -jar [你的jar文件]
或将其放入脚本文件中:myscript.sh 设置执行权限:
> chmod ugo+x myscript
示例脚本:
#!/bin/bash
$JAVA_HOME/bin/java -jar [jarfile]
然后运行./myscript.sh