1

语境

我想将 JavaFx 与 clojure 一起使用。

我知道http://nailthatbug.ne​​t /2011/06/clojure-javafx-2-0-simple-app/

问题:

有没有办法使用 lein 中的 native-deps 使 JavaFX 与 Clojure 一起工作?

谢谢!

4

4 回答 4

3

在 Github 上创建了一个简单的 Clojure 和 JavaFX 示例在 Ubuntu 上进行测试我必须使用deploy:deploy-file目标将 JavaFX 运行时安装到我的本地 Maven 存储库中(install:install-file 对我不起作用)。

mvn deploy:deploy-file -DgroupId=local.oracle -DartifactId=javafxrt -Dversion=2.2.0 -Dpackaging=jar -Dfile=/usr/lib/jvm/java-7-oracle-amd64/jre/lib/jfxrt.jar -Durl=file:/home/raju/.m2/repository

确保正确设置了以下参数:

  • -Dfile={jre/lib 文件夹中 jfxrt.jar 的完整路径}
  • -Durl=file:{Maven 存储库的完整路径,例如 $HOME/m2.repository}

在 project.clj 中,我在将 JAR 安装到存储库时添加了基于 -DgroupId 和 -DartifactId 值的依赖项。如果您使用更改这些值,请确保相应地更改依赖项:

[local.oracle/javafxrt "2.2.0"]

Java 能够毫无问题地加载二进制库。如果 Java 报告加载二进制库时出现问题,例如

引起:java.lang.UnsatisfiedLinkError:无法加载库:/usr/lib/jvm/javafx-sdk/rt/lib/amd64/libglass.so

在 SO 上查看这两个问题:

什么是 LD_LIBRARY_PATH 以及如何使用它?
java.lang.UnsatisfiedLinkError no *****.dll in java.library.path

于 2012-09-25T10:06:05.717 回答
1

因为 JavaFx 具有本机依赖项,​​所以您的选择仅限于,]

  • 将这些依赖项与您的项目(包括它们)一起提供,
  • 创建一个你可以依赖的包(提供它们),
  • 或让您的软件包要求用户以其他方式安装它们。

因为您链接到的教程涵盖了包/程序的用户自己安装 JavaFx 的情况,通过使用robert.hook并依赖最终用户的包管理器来提供实际的本机依赖项。我将介绍如何让您的包/程序包含依赖项。

native-deps可用于将本机依赖项与您的包一起提供。您只需在适当的目录中添加所有 .so、.dll、.etc 文件。我认为项目 github 页面在解释结构方面比我做得更好。

于 2012-06-20T01:12:05.633 回答
1

问题中的链接已损坏,因此我看不到您的示例,但是对于 Java 8,JavaFX 现在是标准 JDK/JRE 的一部分。因此,我希望本机依赖问题在这一点上无关紧要。

于 2013-02-21T05:45:15.393 回答
0

不确定这是否对其他人有用,但这似乎(到目前为止)对我有用:

mvn install:install-file -DgroupId=javafx -DartifactId=javafx -Dversion=2.1.0 -Dpackaging=jar -Dfile=/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jfxrt。罐

我不知道为什么会这样,但我相信 jfxrt.jar 有我需要的文件。然后,在此之后,我在 project.clj 中将其点燃为

[javafx "2.1.0"]

在 :dependencies (不是 :native-deps) 部分。

[写完这篇,我真的不知道为什么这似乎有效。]

于 2012-06-20T01:53:43.197 回答