Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不能运行编译后的JavaFX11类?_Java_Javafx_Javafx 11 - Fatal编程技术网

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

为什么不能运行编译后的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 。。。我得

按照上的说明,我通过以下方式编译了示例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\u TO_FX
确实指向
javafx-sdk-11/lib

邮件列表中已经回答了这个问题:

“java”命令需要完全限定的类名,而不是文件路径 它的论点

完成时:

  • 该命令处理文件名,这意味着您可以从任何位置编译java文件:

    javac [ options ] [ sourcefiles ]
    
    cd /Users/<user>/Downloads
    
  • 但是,该命令处理类:

    java [options] mainclass [args...] 
    
    其中
    mainclass
    指定要启动的类的名称,而不是文件名或位置

如果您安装了Java 11(并且设置了
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 11(并且设置了
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