当前位置: 首页 > 知识库问答 >
问题:

为什么不能运行编译后的JavaFX11类?

苗盛
2023-03-14

按照https://openjfx.io/openjfx-docs/#install-javafx的说明,我通过以下方式编译了示例HelloFX. java:

 javac --module-path $PATH_TO_FX --add-modules=javafx.controls /Users/me/Documents/java/HelloFX.java 

但是现在如果我试着运行它。。。

 java --module-path $PATH_TO_FX --add-modules=javafx.controls /Users/me/Documents/java/HelloFX

... 我得到一个错误:

 Error: Could not find or load main class .Users.me.Documents.java.HelloFX
 Caused by: java.lang.ClassNotFoundException: /Users/me/Documents/java/HelloFX 

然而,报告为未找到的文件在那里:

 ls -l /Users/me/Documents/java/HelloFX.class
 -rwxr--r--  1 me  staff  1336 Oct 30 16:01 /Users/murray/Documents/java/HelloFX.class

(我已经将权限更改为添加u x,以防出现问题,但显然这不是问题所在。

怎么了?

(是的,$PATH_TO_FX指向javafx-sdk-11/lib

共有1个答案

荆弘伟
2023-03-14

openjfx开发人员邮件列表中已经回答了这个问题:

“java”命令需要一个完全限定的类名,而不是作为其参数的文件路径

完成时:

>

javac [ options ] [ sourcefiles ]

但是,java命令处理类:

java [options] mainclass [args...] 

其中mainclass指定要启动的类的名称,而不是文件名或位置。

如果您已经安装了Java11(并在其中设置了JAVA_HOME),则下载了JavaFX 11 SDK,并遵循入门指南:

>

  • 将HelloFX类下载到任何位置,即/Users/

    打开一个终端和cd到该位置:

    cd /Users/<user>/Downloads
    

    设置JavaFX路径:

    export PATH_TO_FX=/path/to/javafx-sdk-11/lib
    

    编译类:

    javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
    

    检查在同一文件夹级别创建了HelloFX. class

    运行该类:

    java --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX
    

    它应该运行良好。

    现在,如果您尝试从不同的位置运行上述命令,它将无法工作,因为类路径中不可用的HelloFX类。

    因此,如果要从其他位置运行此类,则需要指定以下类路径:

    javac --module-path $PATH_TO_FX --add-modules=javafx.controls \
        /Users/<user>/Downloads/HelloFX.java
    
    java --module-path $PATH_TO_FX --add-modules=javafx.controls \
       --class-path /Users/<user>/Downloads HelloFX
    

  •  类似资料:
    • 按照https://openjfx.io/openjfx-docs/#安装-javafx https://openjfx.io/openjfx-docs/#安装-javafx的说明,我通过以下方式编译了示例hellofx.java: 我有错误: 错误:找不到模块:javafx.controls 1错误 然后按照指令添加行:javac--module-path$path_to_fx--add mod

    • 我有一个简单的测试设置,如 但当我尝试编译测试时,我会遇到53个错误,比如 实际上并没有传达任何关于问题所在的有用信息。我只能假设在我的构建中没有正确配置某些内容。sbt文件或其他地方。 这段代码确实曾经工作过,在我清理东西的过程中,事情发生了变化,现在它被破坏了,没有好的诊断。 有人能提出要找的东西吗?

    • 奇怪的是,标记为“OK”的行编译得很好,但标记为“Error”的行失败了。它们看起来基本上是一样的。

    • 我目前正在一个名为“C:\Users\Acer\Mega\Megasync Uploads\Second Year\First Semerture\Data Structures and Algorithms\Genetic Algorithms”的文件夹中用VSCODE制作一个java文件。但是,当我点击Run时,一个错误迫使我添加父文件夹“Data Structures and Algorit

    • 此代码可编译但不运行;当我试图运行这个程序时,它会给出一个。我做错了什么?

    • 发生在运行时,因为编译器不能在决定执行哪个函数,但为什么编译器不能在编译时决定呢? 产出: 狗在吃...