2017-07-08 4 views
1

libisabelleを使用して、ScalaからIsabelleを起動します。しかし、デフォルトでは(つまり、tutorialに記載されているような呼び出しを使用して)、libisabelleは新しいIsabelleインストールをダウンロードします。既存のIsabelleをインストールしたlibisabelle

代わりに、既存の(読み取り専用の)Isabelle構成を使用したいと考えています。

java.nio.file.AccessDeniedException: /opt/Isabelle2016-1/.lock 

だからlibisabelle書きたい:

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) 

私はこれは私は物事を設定することが出来るのですが、どのような場合には、それは動作しませんどのようにあるかどうかわからない:私は次のことを試してみましたイザベルのインストールに。私はコードが読み取り専用インストールでも動作するようにしたい。

上記の状況でlibisabelleを動作させるにはどうすればよいですか?

答えて

1

は、同時に2つのプロセスが書き込むことができないようにインストールをロックしようとします。あなたがそこに渡すパスがすべてから取得またはリソースを含むディスクへの書き込みをlibisabelleのために使用されますので、おそらくあなたが何を考えて実行しませんgenericPlatformを使用して

、。その呪文で

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

は、あなたが/opt/Isabelle2016-1でグローバルインストールを使用しますが、何もそこに書かれていない:

幸いにも、インスタンス化Setupは手動で非常に簡単です。 $ISABELLE_HOME_USERなどは、Linuxでは~/.local/share/libisabelleを指します。

+1

マイナーチェンジでは、 'Platform.guess()。get'ではなく' info.hupel.isabelle.Platform.guess.get'で動作します。 ( 'Platform'は' java.lang.Platform'によって隠され、 '()'は 'guess'の戻り値を呼び出そうとします) –

+0

ありがとう、私は' guess() '→' guess'の変更を取り入れました。 'Platform'の問題は、' info.hupel.isabelle._'からのワイルドカードのインポートで取り除かなければなりません。 – larsrh

+0

"プラットフォームの問題は、' info.hupel.isabelle._'からのワイルドカードのインポートによって消えてしまうはずです。確かにそうです。私のソースでそのインポートがあったので、以前は問題があったのは不思議です... –

関連する問題