在我的NetBeans Java 8项目中,必须将一些本机库复制到lib
目录中。通过多次搜索尝试,我发现NetBeans无法通过GUI进行此操作。所以我添加了以下内容:
对于正常的本地构建并运行:
<condition property="isMac">
<os family="mac" />
</condition>
<condition property="isWindows">
<os family="windows" />
</condition>
<target name="-copy-win" if="${isWindows}">
<echo message="copying windows libraries"/>
<copy todir="${basedir}/dist/lib">
<fileset dir="${basedir}/native" includes="**/*.dll"/>
</copy>
</target>
<target name="-copy-mac" if="${isMac}">
<echo message="copying mac libraries"/>
<copy todir="${basedir}/dist/lib">
<fileset dir="${basedir}/native" includes="**/*.dylib"/>
<fileset dir="${basedir}/native" includes="**/*.so"/>
</copy>
</target>
<target depends="-copy-win,-copy-mac" name="-pre-jfx-deploy"/>
对于“仅打包为图像”选项:
<target name="-post-jfx-deploy-mac" if="${isMac}">
<copy todir="${basedir}/dist/bundles/MyApp.app/Contents/Java/lib">
<fileset dir="${basedir}/native" includes="**/*.dylib"/>
<fileset dir="${basedir}/native" includes="**/*.so"/>
</copy>
</target>
<target name="-post-jfx-deploy-win" if="${isWindows}">
<copy todir="${basedir}/dist/bundles/MyApp/app/lib">
<fileset dir="${basedir}/native" includes="**/*.dll"/>
</copy>
</target>
<target depends="-post-jfx-deploy-mac, -post-jfx-deploy-win" name="-post-jfx-deploy"/>
但是对于打包为EXE / DMG而言,本机库不会被复制。我可以通过在fx:deploy
中定义自己的build.xml
任务来解决此问题,但这很麻烦,因为NetBeans已经在jfx-impl.xml
中使用某些JavaScript创建了一个。
还有其他方法吗?
答案 0 :(得分:0)
最后,我认为我有一些工作。
native
的文件夹,并将您的dll和dylib放在其中。然后在build.xml
中输入
添加-copy-win
和/或-copy-mac
目标(如我在上述问题中所述)
添加两个目标:
<target depends="-jfx-copylibs,-rebase-libs,jfx-deployment,-copy-win,-copy-mac" name="-post-jar"/>
<target depends="-copy-win,-copy-mac" name="-pre-jfx-deploy"/>
第一个确保在netbeans中运行项目时将库复制到dist/lib
,第二个确保在部署项目时将库复制到dist/lib
。
-pre-init
目录中<macrodef name="deploy-deploy">
的整个宏jfx-impl.xml
的内部添加目标nbproject
,并将<property name="pp_deploy_fs2" value="lib${file.separator}*.jar"/>
中的值更改为{{ 1}} 整个文件都在此gist中。
然后您可以使用以下代码加载本机库:
value="lib${file.separator}*.*