java - 从 jar 文件创建 linux DEB 时 Jpackage 'invalid option [class]' 错误
问题描述
我在具有 JDK 16.0.1 环境的 Windows 平台上。我通过在我的 NetBeans 上使用 Java 和 Ant 创建了我的 java 代码的 jar 文件。这些是我用来从 jar 文件创建 DEB 文件的命令行:
jpackage --input D:\Fida\Codeblocks\Java\Projects\MultipleClass\dist\MultipleClass.jar --name Multiple Class --main-jar D:\Fida\Codeblocks\Java\Projects\MultipleClass\dist\MultipleClass.jar --main-class parent.Parent --type deb --java-options 'enable-preview'
在这里,输入属性是我的 jar 文件所在的位置。name 属性是生成后的 DEB 文件的名称。main-jar 属性也是我要转换为DEB的jar文件的位置。main-class 属性是 jar 文件的主类,在本例中为“parent.Parent”。我从 jar 文件中的 Manifest.mf 得到它。type 属性是我要转换的 jar 文件,在本例中为“deb”。最后,选项属性(我不明白。我只是从这个站点复制粘贴了整个命令)。
但是当我按下回车键时,我得到了这个错误:Error: Invalid Option: [Class].
而且我确信某处有错误。我什至在我的 Linux 系统上使用相同的 JDK 版本运行了相同的命令。然后我得到了这个:
java.nio.file.FileAlreadyExistsException: /tmp/jdk.jpackage16852425662219297051/images/src/MultipleClass/lib/app
我不知道现在做什么。除了这个错误的解决方案之外,我还希望有任何其他将 jar 转换为 Linux 可执行文件的建议。
解决方案
Multiple Class
是Windows(CMD 和 PS)和任何 Unix shell 中的两个参数(又名标记或单词)。Error: Invalid Option [Class]
告诉您第二个参数没有被视为--name
值的一部分,而是作为一个新选项,并且它不是一个选项,因此使其无效。要使其成为一个参数并因此有效,要么省略空格,要么在其周围加上引号(仅在 CMD" "
上,在 PS 或非奇怪的 Unix 上,要么 要么" "
)' '
。由于至少大多数 Unix 变体(包括 deb 和 rpm)上的包/安装程序文件名习惯上不包含空格,因此前者可能更好。
但正如您链接页面的第 4 步中正确说明的那样,jpackage 必须在您所针对的操作系统类型上运行;您只能从Linux 打包“deb”(或“rpm”)。并且--input
应该是包含jar 的目录,而不是实际的 jar,如该页面上的尾部斜杠所示。
推荐阅读
- symfony - symfony 有解析 HTML 内容的服务吗?
- oracle - Oracle SQL regexp_substr 查找字符串中的数字
- c# - 如何将条件与类匹配(实现接口)并调用其应用方法
- jquery - 角度从 8 升级到 9.1
- python-3.x - 当我使用 python 请求写入文件时,一些 html 标记丢失
- python - 鹡鸰主搜索添加模型管理模型
- kubernetes - kubernetes二进制安装报错
- python - 如何检查字典中的条件?
- c++ - 无法创建 C++ 项目,拒绝访问 Engine\Intermediate\Build\BuildRules
- laravel - Laravel Horizon 一半的工作都失败了