为什么不能运行编译后的JavaFX11类?
按照上的说明,我通过以下方式编译了示例HelloFX.java:为什么不能运行编译后的JavaFX11类?,java,javafx,javafx-11,Java,Javafx,Javafx 11,按照上的说明,我通过以下方式编译了示例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 。。。我得
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\u TO_FX
确实指向javafx-sdk-11/lib
)邮件列表中已经回答了这个问题:
“java”命令需要完全限定的类名,而不是文件路径
它的论点
完成时:
- 该命令处理文件名,这意味着您可以从任何位置编译java文件:
javac [ options ] [ sourcefiles ]
cd /Users/<user>/Downloads
- 但是,该命令处理类:
其中java [options] mainclass [args...]
指定要启动的类的名称,而不是文件名或位置mainclass
Java_HOME
),则可以下载JavaFX 11 SDK,并遵循入门指南:
- 将类下载到任何位置,即
/Users//Downloads
- 打开一个终端并将cd刻录到该位置:
javac [ options ] [ sourcefiles ]
cd /Users/<user>/Downloads
- 编译类:
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
检查是否在同一文件夹级别创建了java --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX
HelloFX.class
- 运行该类:
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
它应该运行得很好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
javac——模块路径$path\u TO\u FX——添加模块=javafx.controls\
/用户//下载/HelloFX.java
java--模块路径$path\u TO\u FX--添加模块=javafx.controls\
--类路径/用户//下载HelloFX
邮件列表中已经回答了这个问题:
“java”命令需要完全限定的类名,而不是文件路径
它的论点
完成时:
- 该命令处理文件名,这意味着您可以从任何位置编译java文件:
javac [ options ] [ sourcefiles ]
cd /Users/<user>/Downloads
- 但是,该命令处理类:
其中java [options] mainclass [args...]
指定要启动的类的名称,而不是文件名或位置mainclass
Java_HOME
),则可以下载JavaFX 11 SDK,并遵循入门指南:
- 将类下载到任何位置,即
/Users//Downloads
- 打开一个终端并将cd刻录到该位置:
javac [ options ] [ sourcefiles ]
cd /Users/<user>/Downloads
- 编译类:
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
检查是否在同一文件夹级别创建了java --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX
HelloFX.class
- 运行该类:
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
它应该运行得很好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
javac——模块路径$path\u TO\u FX——添加模块=javafx.controls\
/用户//下载/HelloFX.java
java--模块路径$path\u TO\u FX--添加模块=javafx.controls\
--类路径/用户//下载HelloFX