Alloyはjar一個で配布してるので、JNIのDLLとかはどうしてるのかなぁと思ってたんだけど、確認したらjarから一時ディレクトリにコピーしてそこからロードするようになっていた。 edu/mit/csail/sdg/alloy4whole/SimpleGUI.java の以下の部分が該当箇所。
// Copy required files from the JAR
copyFromJAR();
final String binary = alloyHome() + fs + "binary";
…(中略)…
// Add the new JNI location to the java.library.path
try {
System.setProperty("java.library.path", binary);
// The above line is actually useless on Sun JDK/JRE (see Sun's bug ID 4280189)
// The following 4 lines should work for Sun's JDK/JRE (though they probably won't work for others)
String[] newarray = new String[]{binary};
java.lang.reflect.Field old = ClassLoader.class.getDeclaredField("usr_paths");
old.setAccessible(true);
old.set(null,newarray);
} catch (Throwable ex) { }