Libiabelle与现有Isabelle安装

Libiabelle与现有Isabelle安装,isabelle,Isabelle,我想从Scala调用Isabelle。但是,默认情况下(即使用中描述的调用),Libiabelle将下载新的Isabelle安装 我希望改用现有的(只读)Isabelle配置。我尝试了以下方法: val path = "/opt/Isabelle2016-1" val setup = Setup.detect(Platform.genericPlatform(new File(path).toPath), Version.Stable("2016-1")).right.get val resou

我想从Scala调用Isabelle。但是,默认情况下(即使用中描述的调用),Libiabelle将下载新的Isabelle安装

我希望改用现有的(只读)Isabelle配置。我尝试了以下方法:

val path = "/opt/Isabelle2016-1"
val setup = Setup.detect(Platform.genericPlatform(new File(path).toPath), Version.Stable("2016-1")).right.get
val resources = Resources.dumpIsabelleResources().right.get
val environment = Await.result(setup.makeEnvironment(resources), Duration.Inf)
val config = Configuration.simple("Example")
System.build(environment,config)
val system = System.create(environment,config)
我不确定这是否是我应该设置的方式,但无论如何,它都不起作用:

java.nio.file.AccessDeniedException: /opt/Isabelle2016-1/.lock
所以Libiabelle想写信给Isabelle安装。我希望该代码即使在只读安装中也能正常工作


如何让Libiabelle在上述情况下工作?

安装程序。detect
将尝试锁定安装程序,以便没有两个进程可以同时写入

使用
genericPlatform
可能不会像您所想的那样,因为您在那里传递的路径将用于libisabelle从磁盘获取或写入磁盘的所有内容,包括资源

幸运的是,手动实例化
设置
非常简单:

val setup = Setup(
  Paths.get("/opt/Isabelle2016-1"),
  Platform.guess.get,
  Version.Stable("2016-1")
)

有了这个咒语,您将在
/opt/Isabelle2016-1
中使用全局安装,但没有写入任何内容
$ISABELLE\u HOME\u用户
等将指向Linux上的
~/.local/share/libisabelle

这对我来说是一个小修正:
info.hupel.ISABELLE.Platform.guess.get
而不是
Platform.guess().get
。(
Platform
java.lang.Platform
隐藏,
()
尝试调用
guess
的返回值)谢谢,我已经合并了
guess()→ <代码>猜测
更改。
平台
问题应该通过从
info.hupel.isabelle.\u
导入通配符来解决。“平台问题应该通过从
info.hupel.isabelle.\u
导入通配符来解决。”事实上,确实如此。奇怪的是,我之前遇到了问题,因为我的源代码中有这个导入。。。