νz(z3opt):无法使用Java API创建Optimize对象

时间:2016-10-02 05:23:17

标签: z3

我正在尝试使用Java API来使用Max-SMT。以下是我的尝试:

Optimize opt = ctx.mkOptimize();
opt.Add(hardConstraints);
for(BoolExpr c : C){
  opt.AssertSoft(c, 1, "group");
}

但是,第一行中存在运行时错误,其中创建了opt

  

引起:java.lang.UnsatisfiedLinkError:
  com.microsoft.z3.Native.INTERNALmkOptimize(J)J at   在。的com.microsoft.z3.Native.INTERNALmkOptimize(本地方法)   com.microsoft.z3.Native.mkOptimize(Native.java:5237)在   com.microsoft.z3.Optimize。(Optimize.java:265)在   com.microsoft.z3.Context.mkOptimize(Context.java:3036)

我正在使用Github的最新版Z3,于9月30日下载。

1 个答案:

答案 0 :(得分:0)

在OSX上,确保系统完整性保护不会干扰您的工作。在此设置中,它可能会在启动JVM时从您的环境中删除DYLD_LIBRARY_PATH环境设置,这会导致无法找到*.dylib

有关特定于Z3的信息,请参阅Z3 Java API fails to detect libz3.dylib。有关SIP的一般信息,请参阅About System Integrity Protection on your Mac。我还没有找到一个很好的方法告诉OSX Z3是安全的#34;但是没有完全禁用SIP。