我刚开始使用jpack,它是一个非常棒的工具。一步就可以让我轻松完成很多工作。我对看起来硬编码且无法定制的东西就越感到惊讶?
JPackage自动生成启动器(lib/
根据Ubuntu DEB安装程序使得所有的Java应用程序都有相同的图标,我们只需要确保。桌面文件包含正确的< code>StartupWMClass
。使用xprop,我发现这个值是基于负责窗口的完全限定类名的——这绝对有意义。
那么我如何告诉jpackage在生成的。桌面文件?
编辑:为了补充Bodo的评论,我将展示我如何调用jpackage。事实上,我自己并没有运行命令行——相反,我使用的是maven插件,配置为:
<plugin>
<groupId>com.github.akman</groupId>
<artifactId>jpackage-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jpackage</goal>
</goals>
<configuration>
<dest>target</dest>
<name>OoliteCommunicator</name>
<type>PLATFORM</type>
<appversion>${project.version}</appversion>
<description>Oolite Communicator is an add-on for Oolite to allow multiplayer interaction. (check http://oolite.org)</description>
<vendor>Hiran</vendor>
<icon>target/classes/com/mycompany/oolitecommunicator/ui/Communicator_Logo_Icon.png</icon>
<input>target/dist</input>
<mainjar>OoliteCommunicator-${project.version}.jar</mainjar>
<mainclass>com.mycompany.oolitecommunicator.Main</mainclass>
</configuration>
</execution>
</executions>
</plugin>
在maven构建期间,我看到的是这个输出,我认为它是插件调用jpackage时在内部生成的命令行。最后一行可能已经是调用了,每当我在构建后检查时,都没有文件/home/hiran/NetBeansProjects/OoliteCommunicator/target/jpackage.opts。我只能假设它的内容刚才被记录了。
# jpackage
--dest /home/hiran/NetBeansProjects/OoliteCommunicator/target
--app-version '1.0-20211220-090022'
--description 'Oolite Communicator is an add-on for Oolite to allow multiplayer interaction. (check http://oolite.org)'
--name 'OoliteCommunicator'
--vendor 'Hiran'
--icon /home/hiran/NetBeansProjects/OoliteCommunicator/target/classes/com/mycompany/oolitecommunicator/ui/Communicator_Logo_Icon.png
--input /home/hiran/NetBeansProjects/OoliteCommunicator/target/dist
--main-jar 'OoliteCommunicator-1.0-20211220-090022.jar'
--main-class com.mycompany.oolitecommunicator.Main
/usr/lib/jvm/java-16-openjdk-amd64/bin/jpackage @/home/hiran/NetBeansProjects/OoliteCommunicator/target/jpackage.opts
最后,我得到了一个包含这个桌面文件的deb包:
[Desktop Entry]
Name=OoliteCommunicator
Comment=Oolite Communicator is an add-on for Oolite to allow multiplayer interaction. (check http://oolite.org)
Exec=/opt/oolitecommunicator/bin/OoliteCommunicator
Icon=/opt/oolitecommunicator/lib/OoliteCommunicator.png
Terminal=false
Type=Application
Categories=Unknown
MimeType=
我通过手动添加行修复了bhaviour
StartupWMClass=com-mycompany-oolitecommunicator-Main
所以我的解决方法是将这一行添加到两个
安装deb后。我想不像jpack那样容易……
所以最终我发现了一种可能,那就是拥有合适的包装。
您需要覆盖JPackage内部模板并提供您自己的模板。桌面文件。这可以通过覆盖JPackage资源来实现。
这意味着您使用正确的。桌面文件,在JPackage命令行上指定resource文件夹,将会创建正确的包。
要求是创建一个可以注册点击事件的桌面通知。我不能使用web套接字或任何浏览器通知 我无法使用任务栏图标和系统任务栏,因为它们无法在显示消息上注册单击事件。他们可以在trayicon上有点击事件,但不能在显示消息上。最接近的例子——“当我们注册一条Skype消息时,它会为我们打开Skype” 截图 点击上面的通知Skype聊天打开。托盘图标不支持相同的功能。要么围绕它工作,要么采取新的方法。 希望我
这怎么了? 我有Windows10 Pro。所以,我有Docker Desktop并且我正在使用WSL2
我有一个用Java编写的小实用程序,用Netbeans作为“Maven项目”编写(项目上的小图标上有一个样式化的“m”)。我想把这个实用程序以及它所依赖的库打包成一个jar文件;我希望jar文件包含必要的运行库,这样我就不必单独打包它们。 Netbeans指令说,当我运行build时,我将在项目目录下创建'dist'和'lib'目录,并且(因为我在项目属性中设置了主类),我将在清单文件中指定它。所
本文向大家介绍简单掌握Android Widget桌面小部件的创建步骤,包括了简单掌握Android Widget桌面小部件的创建步骤的使用技巧和注意事项,需要的朋友参考一下 一、Widget设计步骤 需要修改三个XML,一个class: 1.第一个xml是布局XML文件(如:main.xml),是这个widget的。一般来说如果用这个部件显示时间,那就只在这个布局XML中声明一个text
我有一个3模块的maven项目,其母公司是pom。当我运行maven clean编译测试时,来自父级。它在测试阶段失败,并为我的本地类提供了大量编译错误,如“找不到符号”。 我发现使用IntelliJ ide如果在运行maven测试之前使用“生成项目”按钮,那么maven测试就可以工作! 编辑:现在我弄清楚了,由于某种原因,maven编译不会在目标文件夹中创建类文件,这是我在父pom文件中的mav
我想使用jnlp在桌面(Windows)中为Oracle窗体中的应用程序创建快捷方式。 我有一个这样的jnlp(示例): (https://oracle-base.com/articles/11g/oracle-forms-11g-and-java-web-start) 这是正确的工作。我把它贴在一个网站上,当按钮被点击时打开它。像这样: 如果我按下任何一个按钮(我不知道两者之间有什么区别),应用