我想将我的java应用程序打包为Debian包。我正在使用netbeans(8.0.1)的内置本地打包器用于Deb-Packages
包装后输出: 执行失败:java.io.IOException:无法运行程序“command”(在目录
中)“/ home / testuser / Songs”):error = 2,没有这样的文件或目录 /home/testuser/Songs/nbproject/jfx-impl.xml:3415:执行此行时发生以下错误: /home/testuser/Songs/nbproject/jfx-impl.xml:3584:错误: JavaFX本机打包程序需要Debian Packager工具来创建DEB包,但找不到dpkg。 建筑失败(总时间:1秒)
我已经使用apt-get安装了dpkg-dev。 $ PATH变量包含/ usr / bin
我不知道如何解决这个问题。任何人都知道为什么netbeans找不到dpkg?
答案 0 :(得分:3)
我解决了在nbproject / jfx-impl.xml中覆盖目标-check-dpkg-presence定义的问题。
原始目标查找"命令"文件在项目文件夹中。 该行检查dpkg的实际路径。 运行命令-v dpkg,你得到/ usr / bin / dpkg。
如果您尝试使用
,这是相同的beavoiur其中dpkg ==>的/ usr /斌/ dpkg的
所以我在build.xml中这样做
<target name="-check-dpkg-presence" depends="-check-native-bundling-type" if="need.dpkg.presence">
<local name="exec.which.dpkg.result"/>
<local name="exec.which.dpkg.output"/>
<exec executable="which" failifexecutionfails="false" failonerror="false" resultproperty="exec.which.dpkg.result" outputproperty="exec.which.dpkg.output">
<arg line="dpkg"/>
</exec>
<condition property="missing.dpkg">
<not><and>
<isset property="exec.which.dpkg.result"/>
<equals arg1="${exec.which.dpkg.result}" arg2="0"/>
<isset property="exec.which.dpkg.output"/>
<not><equals arg1="${exec.which.dpkg.output}" arg2=""/></not>
</and></not>
</condition>
</target>
我更改了属性(executable =&#39;其中&#39;)和arg标记的line属性。
它有效。
答案 1 :(得分:1)
如果您尝试在项目目录中运行ant -v build-native
,则会看到错误。 NetBeans创建的ant构建脚本正在尝试运行command dpkg ...
来构建程序包,但是因为&#34;命令&#34;是/ bin / bash中的内置shell命令,测试&#34;命令&#34;你的PATH失败了。
我创建了一个名为&#34;命令&#34;的shell脚本。在我的本地路径中:
#!/bin/bash
command $@
工作正常。