为了加载.DLL(在Windows下)或.SOs(在Linux下),我们必须使用环境变量PATH(Windows)或LD_LIBRARY_PATH(Linux)。
我们能够找到正确使用DLL和SO的唯一方法是在启动Netbeans之前定义环境变量。
背景:我们正在开发一个使用JNI访问本机库的Java程序。反过来,这些本机库访问其他依赖的本机库。因此,仅设置属性“java.library.path”不起作用,因为我们需要设置完整的LD_LIBRARY_PATH(或Windows的常规PATH)。
在Netbeans之外,应用程序运行正常,因为我们在shell脚本中设置了环境变量。
我们不希望将DLL或SO放在通常的系统目录中,因为我们不想在开发期间搞乱操作系统安装。此外,我们希望能够灵活地允许任何开发人员从源代码控制(Mercurial)中获取项目,并使所有相对路径正常工作。
堆栈溢出已经存在设置environment variables programmatically in Java的黑客攻击。但是,我们正在寻找不那么强硬的解决方案。
答案 0 :(得分:0)
您可以覆盖NetBeans在build.xml
文件中使用的Ant脚本任务(或直接在nbproject/build-impl.xml
中的完整脚本中编辑它,但不建议这样做。)
在run
目标上使用了java task。您可以使用env
参数为将运行JVM的进程指定环境变量。