在Java中将Z3重用为库jar

在Java中将Z3重用为库jar,java,scala,jar,z3,Java,Scala,Jar,Z3,目前我正在为我的硕士论文开发一个使用Z3的工具。我选择在Scala项目中使用Java绑定。现在我想创建一个可分发的jar,它既可以独立使用,也可以被其他项目使用。不幸的是,由于com.microsoft.z3.jar使用libz3等本机库{so,dylib,lib,dll},我还没有找到一种简单的方法来实现这一点 通常,必须通过添加-Djava.library.path=…标志来链接本机库,该标志指定可以在何处找到本机库 我一直在研究SBT包、汇编和一个jar,但这些打包工具似乎都不允许其他项目

目前我正在为我的硕士论文开发一个使用Z3的工具。我选择在Scala项目中使用Java绑定。现在我想创建一个可分发的jar,它既可以独立使用,也可以被其他项目使用。不幸的是,由于com.microsoft.z3.jar使用libz3等本机库{so,dylib,lib,dll},我还没有找到一种简单的方法来实现这一点

通常,必须通过添加
-Djava.library.path=…
标志来链接本机库,该标志指定可以在何处找到本机库

我一直在研究SBT包、汇编和一个jar,但这些打包工具似乎都不允许其他项目重用,也不允许自动链接本机库;当我的项目用作库时也是如此

理想情况下,结果是一个.jar,其中包含本机库,Java知道在哪里可以找到它们(Java.library.path),而用户没有指定任何内容的权限。jar本身可以由另一个项目作为库执行或导入

我是否必须退回到这样一种情况,即使用Z3的每个项目都必须包含标志
-Djava.library.path=…


欢迎提出任何建议!谢谢

(1)我认为sbt程序集可以配置为将任意文件打包到它创建的jar文件中;如果您的项目可以作为一个独立的应用程序使用,文档希望了解更多信息(2),随附的shell/batch文件设置
-Djava.library.path
可能是solution@MalteSchwerhoff你完全正确。除了java.library.path不能给出.jar中某些内容的路径。另外,我注意到您还必须为共享对象/本机库设置环境变量
LD\u LIBRARY\u PATH
,以便相互查找。非常感谢你和我一起思考;)(1) 我认为sbt程序集可以配置为将任意文件打包到它创建的jar文件中;如果您的项目可以作为一个独立的应用程序使用,文档希望了解更多信息(2),随附的shell/batch文件设置
-Djava.library.path
可能是solution@MalteSchwerhoff你完全正确。除了java.library.path不能给出.jar中某些内容的路径。另外,我注意到您还必须为共享对象/本机库设置环境变量
LD\u LIBRARY\u PATH
,以便相互查找。非常感谢你和我一起思考;)