我有一个多模块构建SBT组成的api,core和third-party.结构大致如下:
api
|- core
|- third-party
Run Code Online (Sandbox Code Playgroud)
third-party实现的代码api和从其他地方逐字复制,所以我真的不想触摸它.
由于实施的方式third-party(大量使用单身人士),我不能只core依赖third-party.具体来说,我只需要通过它来使用它api,但我需要third-party在运行时拥有多个独立的副本.(这允许我同时拥有多个"单身人士".)
如果我在我的SBT构建之外运行,我只是这样做:
def createInstance(): foo.bar.API = {
val loader = new java.net.URLClassLoader("path/to/third-party.jar", parent)
loader.loadClass("foo.bar.Impl").asSubclass(classOf[foo.bar.API]).newInstance()
}
Run Code Online (Sandbox Code Playgroud)
但问题是,我不知道如何在运行时弄清楚URLClassLoader如果我正在运行,我应该给出什么作为参数sbt core/run.
我一直在努力学习虽然原则上我喜欢异步防爆检查的主意,用伊莎贝尔2016年,我不喜欢伊莎贝尔/ jEdit的为许多原因,其中最严重的是,它使用了太多的内存(为了我).
如果我可以使用Isabelle 2016中的旧版Proof General,那就太棒了.我将变量设置isa-isabelle-command为指向bin/isabelleIsabelle分发目录下的文件.当我使用Proof General的菜单启动Isabelle时,Emacs挂起,当我打断它时C-g,我在*isabelle*缓冲区中得到以下内容.
> val it = (): unit
^BException- ERROR "Bad socket name: \"I\"" raised
Run Code Online (Sandbox Code Playgroud)
我知道这个站点上的旧帖子表明,Proof General用来与定理证明者通信的Isabelle组件被删除了.这是(仍然)Isabelle 2016的真实情况吗?如何在较新版本的Isabelle中使用Proof General?
逻辑编程和自动定理证明(ATP)之间有什么区别(例如使用E-Prover,Spass或Princess)?
我搜索了很多,我发现的唯一信息是ATP是逻辑编程的先驱.但我没有看到差异.但我想这不仅仅是语法.
我有一个针对Scala 2.10、2.11和2.12的多模块SBT构建交叉构建。我想添加一个支持Java 8的子模块。但是,这仅适用于Scala 2.11(和2.12)。我的目标是让SBT仅为2.11和2.12构建此特定子模块,而对于2.10则忽略它。特别是,不要发布2.10的工件。
我目前的工作假设是重写publish,libraryDependencies并unmanagedSourceDirectories基于斯卡拉版本键,但我一直在寻找一个更好的解决方案。
我正在使用 Scala,它提供了自己的“执行上下文”抽象(与 Java 的 大致相同Executor)。我想与另一个需要ExecutorService. 是否可以ExecutorService在Executor?周围构造一个包装器?
我知道这ExecutorService是Executor. 但在我的情况下,我只有后者,需要从中构建前者。
如果构造ExecutorService不提供关闭/等待功能,那对我来说没问题。我真正关心的是submit给定execute.