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

2024-01-20

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

  • 对于 Windows,我使用 Launch4j 创建 *.exe 文件,但对于 MAC 和 Linux 是否有等效文件?

  • 我的应用程序将选项保存到 Windows 注册表中(我使用了“JavaRegistrtyWrapper“库)。是否有适用于 MAC 和 Linux 的等效“注册表”(以及我如何在那里读取/写入信息)?

  • 当用户在下载后尝试启动 *.exe 文件时,是否可以避免 Windows 警告“未知发布者”? (我在 MAC 和 Linux 上也会遇到同样的问题吗?)。我尝试创建自己的证书,并使用“signtool.exe”对文件进行签名,但它不起作用。

Thanks !

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


运行 JAR 应用程序的脚本

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

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

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

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

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

签署 Windows EXE 文件

对于签名 Windows exe 文件,您可以尝试使用微软签名工具 https://msdn.microsoft.com/en-us/library/aa387764.aspx.

这是一个类似的 stackoverflow 问题:签署 Windows EXE 文件 https://stackoverflow.com/questions/252226/signing-a-windows-exe-file

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 .jar 转换为适用于 Windows、Linux 和 Mac 的应用程序 的相关文章

随机推荐

  • UITextField 上的强密码叠加

    我面临着奇怪的覆盖UITextField 我正在使用类型字段textContentType password and isSecureTextEntry true 我还有眼睛按钮 可以通过更改来取消隐藏密码字符isSecureTextEnt
  • Kendo-Grid 列字段验证

    我正在努力使用 API 数据填充 kendo grid 但在一个字段上添加验证也会自动适用于所有其他字段 这是 kendo dataSource 内部的架构 schema model id id fields id editable fal
  • Android 上的 ORMLite 不调用 onCreate

    使用 ORMLite v 4 40 我尝试让我的应用程序运行 但它似乎忽略了 onCreate 函数 我的 DatabaseHelper 看起来像这样 片段样式 public class ORMLiteHelper extends OrmL
  • 动态创建函数/子程序的 AutoHotkey 热键

    自动热键命令Hotkey允许在运行时创建动态热键 但其语法和文档似乎将其限制为内置或现有标签 子例程 这使得much不太有用 热键 键名 标签 选项 有没有办法让它像常规的硬编码热键一样工作 例如 z MsgBox foobar Typic
  • SQL:显示标准差内的平均值和最小值/最大值

    我有以下 SQL 表 Date StoreNo Sales 23 4 34 4323 00 23 4 23 564 00 24 4 34 2345 00 etc 我正在运行一个查询 返回特定时间段内的平均销售额 最大销售额和最小销售额 se
  • Intellij IDEA:找不到“JdbcTemplate”类型的bean

    Intellij IDEA 15 0 3 表示 JdbcTemplate bean 不存在 这是一个 Spring Boot 项目 因此所有需要的 bean 都应该在 boot 内部创建 它工作正常 我可以与我的数据库交互 但 IDEA 将
  • 用于运行 DiskPart 的批处理文件

    我正在尝试开发一个批处理文件来运行并删除 Windows 7 中的隐藏分区 当尝试删除所有分区时 通常我在命令提示符窗口中逐行执行此操作 但试图找出如何创建批处理文件来运行并加快此过程 以下是我在命令提示符下键入的行 disk part R
  • 终结器在其对象仍在使用时启动

    Summary C NET 应该被垃圾收集 C 有一个析构函数 用于清理资源 当对象 A 在我尝试克隆其变量成员之一的同一行被垃圾回收时会发生什么 显然 在多处理器上 有时垃圾收集器会获胜 问题 今天 在 C 培训课程中 老师向我们展示了一
  • 程序化屏幕截图歪曲了最近邻居

    我遇到了屏幕截图 以编程方式使用下面的代码 与图像放大 在我的情况下非常远 并渲染最近邻以保留硬边缘时屏幕上实际显示的内容之间的不一致 我从这些论坛获得了以下屏幕截图代码 但保存的是图像的 双线性 渲染而不是最近邻 UIGraphicsBe
  • 如何在postgresql中将bigint(以毫秒为单位的时间戳)值写入为时间戳

    我试图将我的值存储在带有时区字段的时间戳中 从 1970 年开始以毫秒为单位 select TO CHAR TO TIMESTAMP 1401432881230 DD MM YYYY HH24 MI SS MS 预期的30 5 2014 1
  • 实体框架 - 只有 edmx,没有模板

    我们只想添加 EDMX 文件 而不添加上下文和实体的相应 tt 文件 造成这种情况的原因有多种 但长话短说 我们希望能够拥有 EDMX 并能够在需要时从数据库刷新它 目前 如果我每次 从数据库更新 时删除 tt 文件 它将重新生成我们不需要
  • C# 中的互斥量和信号量是什么?我们需要在哪里实施? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 C 中的互斥量和信号量是什么 我们需要在哪里实施 我们如何在多线程中使用它们 您应该从 MSDN 开始 系统 线程 互斥体 http
  • Paypal Recurring Gem - 暂停付款

    我正在寻找为贝宝经常性宝石 跟随 Rails Cast 设置付款暂停 我不确定是否需要设置 IPN 因为 gem 的文档中没有提及它 我目前拥有的代码不执行任何操作 我在模型中定义了取消重复 但我不确定如何完成代码 因为我很难理解这一切是如
  • 更新 python 包后出现“InvalidRequirement:无效需求,解析错误”错误

    使用更新包 在我的例子中是 IPython 后pip install U ipython运行任何使用入口点的 Python 脚本都会失败并出现以下错误 Traceback most recent call last File home ad
  • 错误:系列的真值不明确 - Python pandas [重复]

    这个问题在这里已经有答案了 我知道这个问题之前已经被问过 但是 当我尝试做一个if声明 我收到错误 我看了这个link https stackoverflow com questions 36921951 truth value of a
  • psql:服务器不支持 SSL,但需要 SSL

    尝试使用命令提示符连接到 postgresql 服务器 使用的命令 psql sslmode require host localhost dbname test 抛出错误 psql 服务器不支持 SSL 但需要 SSL 请帮我解决这个问题
  • 使用 Kotlin 在 Android 应用程序中打开文件选择器

    任务 上传用户可以从设备中选择的图像 我怎样才能打开文件选择器 https en wikipedia org wiki File dialog使用 Kotlin 在 Android 应用程序中按下按钮时出现窗口 在您的活动中 添加按钮单击以
  • WAN 上的 TCP/UDP 套接字服务器

    我用 C 编写了一个套接字服务器 它将用作我参与的一个小型游戏项目的基本设计 套接字服务器在局域网上工作正常 我能够在服务器和客户端之间完全正常通信 然而 在 WAN 上 服务器从客户端接收到所有正确的消息 但客户端没有从服务器接收到任何消
  • 本地化可点击跨度 Android

    我在我的应用程序中使用本地化 english indonesia 然后在活动中我写 class MainActivity AppCompatActivity private lateinit var binding ActivityMain
  • 将 .jar 转换为适用于 Windows、Linux 和 Mac 的应用程序

    我用 Eclipse 制作了一个 Java 应用程序 导出为 jar 我想将其导出到 Windows exe Linux 和MAC 我没有任何 Linux 或 MAC 机器 所以我不知道每台机器都需要什么扩展文件 所以我有几个问题 对于 W