5

所以我试图为 javafx 运行一个简单的 helloworld 应用程序,但找不到它的包。好的,那一定是某种路径问题吧?

我已经从这里下载了共同捆绑的版本:

http://www.oracle.com/technetwork/java/javafx/downloads/index.html

您会期望 co-bundled 会像安装 SE 包一样安装。我已经在网上搜索过,人们用 windows 路径给出了 windows 的 mac 问题答案。这真的是 IMO 一个 java 问题,因为你要么像你说的那样共同捆绑并安装两者,要么将它们分开!

我还没有找到一个合适的解决方案来让 javafx 包含在编译中,这不涉及包含长路径。

编辑:安装 netbeans 并创建 javafx 项目后,找到合适的包没有问题。我认为在这一点上应该清楚 FX 与 SE 版本捆绑在一起,但是他们(Java 维护者)已经决定让 FX 从命令行工作变得非常困难。对这个原本愚蠢的决定有任何见解吗?

4

3 回答 3

4

一些选择:

  1. 使用JavaFX 8,它将 JavaFX 放置在默认的运行时类路径中。
  2. 使用Oracle JavaFX 部署工具打包您的应用程序,这些工具将在您的应用程序中插入代码以查找 JavaFX。
  3. 如果您不能执行上述任一操作,请手动将 jfxrt.jar 的路径添加到您的编译和运行时类路径中。

对于 3,您可以在下面找到 jre 的 jfxrt.jar:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

如果您安装了 jdk7,则可以使用如下内容从命令行运行 JavaFX 应用程序(使用 JavaFX 部署工具打包):

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
java -version
java -jar application.jar

如果只是安装了 JRE7 而没有 JDK,那么可以使用:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -jar application.jar
于 2013-02-17T00:32:20.577 回答
2

根据 Jewelsea 的答案中的选项 #3,它在我的 ant 构建文件中是这样的:

<property name="jfx.dir" value="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib"/>

<path id="project.class.path">
    <pathelement path="${classpath}"/>
    <pathelement location="${jfx.dir}/jfxrt.jar"/>
</path>

<target name="compile"
    description="Compiles the source code.">
    <mkdir dir="${classes.dir}"/>
    <javac includeantruntime="false"
        srcdir="${src.dir}" 
        destdir="${classes.dir}">
        <classpath refid="project.class.path"/>
        <exclude name="**/package-info.java"/>
    </javac>
</target>
于 2013-07-09T17:07:35.710 回答
0

我现在在大学的课堂作业中使用 JavaFX。我刚刚发现没有 JDK 版本可以运行 JavaFX,除了 10.0.2。卸载所有其他版本并运行 10.0.2,JavaFX 应该可以工作。

于 2019-11-05T22:49:15.120 回答