在我的Java代码中,当我将SATSolver从SAT4J更改为MiniSatJNI或MiniSatProverJNI时:
var selectedPartecipants = [NSDate]() // this is the array [Item[0], Item[1] etc... ]
func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
if let deselectedData:NSDate = partecipantsAtEvent[indexPath.row].date! {
if let index = selectedPartecipants.indexOf(deselectedData) {
selectedPartecipants.removeAtIndex(index)
("item[0] cancelled - I have to search the item in collection view that now is new item[0] in the array")
}
}
}
例如,要:
A4Options options = new A4Options();
options.solver = A4Options.SatSolver.SAT4J;
然后致电:
A4Options options = new A4Options();
options.solver = A4Options.SatSolver.MiniSatProverJNI;
我收到以下执行错误:
A4Solution currentAns = TranslateAlloyToKodkod.execute_command(null,
javaMetamodel.getAllReachableSigs(), command, options);
任何帮助?
答案 0 :(得分:0)
@Aleksandar指出的解决方案: Alloy API resulting in java.lang.UnsatisfiedLinkError
在linux上为我工作!!!但它不适用于Windows。
感谢您的帮助!
答案 1 :(得分:0)
Alloy使用JNDI / JNI调用本机解算器(如MiniSAT)。这意味着必须先正确配置本机库。如果您没有配置库correclty,Java将生成一个" java.lang.UnsatisfiedLinkError"异常。
Alloy可分发jar包含正确配置的Windows库,用于Windows" x86"对于Linux和Mac中的" x86"和" x64"。这意味着如果您使用的是Java 32位,那么jar将在Windows中运行,无需任何其他配置,但不能使用Java 64位。在其他操作系统中,您可以使用两个Java版本(32位和64位)。
您可以查看other questions in StackOverflow获取相同的说明。