3

我目前正在开发一个主要使用 Jython 的项目,但利用 Clojure 的互操作(使用 rik0 的pyclj解决方案)来利用Overtone库。通常,leiningen 是处理项目依赖项的主要方式,但由于我主要使用 Jython,我怀疑它是否有助于在使用它时处理依赖项。现在我目前的解决方案是使用 lein 编译成一个 jar,然后在类路径中包含这些 jar

    jython -J-cp <path-to-jar>

但是,当我尝试从 Jython 启动 Overtone 时,我收到错误消息:

    java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: Unable to load library 'scsynth': dlopen(libscsynth.dylib, 9): image not found

这是由 Overtone 提供的资源,并列在 jar 文件的清单中。我认为这意味着仅仅在类路径中包含 jar 不足以包含像 dylibs 这样打包在 jar 中的资源,或者这与 Jython 文件没有在 lein 构建中编译和解析的事实有关.

我将如何正确解决 Jython 和 Clojure 之间的这些资源依赖关系?

编辑:

因此,通过在运行 Jython 之前将动态库路径设置为 libscsynth.dylib 所在的路径,我能够使用从这个Google Groups 帖子中找到的 hacky 解决方案来使其工作。最好,我想要一种不那么老套的方式来做这件事,但同时这应该就足够了。如果有人知道如何做到这一点,请告诉我。

4

0 回答 0