JavaFX项目命令行编译报错:找不到CoreFramework包求解决
命令行编译JavaFX项目并生成JAR文件的解决方案
问题背景
我是JavaFX新手,项目结构如下:
<MyCompany-App> <src> <CoreUtils> Constants.java Constants2.java <CoreFramework> VersionControl.java Utils.java <MyCompanyApp> Main.java LaunchLogin.java <Logging> Logging.java <Utils> DBcon.java <lib> javafx.controls.jar javafx.fxml.jar javafx.web.jar
lib目录还包含其他所有第三方依赖jar包。该项目可通过IntelliJ IDE正常编译生成JAR文件,但尝试用以下命令行编译时:
$javac --module-path "<Path to project>\lib" --add-modules javafx.controls,javafx.fxml "<Path to Project>\LaunchLogin.java"
出现错误:
error: package CoreFramework does not exist import CoreFramework.Utils;
LaunchLogin.java中的部分代码如下:
package MyCompanyApp; import CoreFramework.VersionControl; import CoreFramework.Constants; import CoreFramework.Localization; import CoreFramework.Utils;
解决方案
1. 编译所有Java源文件
单独编译LaunchLogin.java时,javac无法找到CoreFramework等自定义包的源文件,需要指定整个源目录并设置输出目录来编译所有文件:
# 进入项目根目录<MyCompany-App> cd "<Path to project>\MyCompany-App" # 编译所有src下的Java文件,将class文件输出到out目录 javac --module-path lib --add-modules javafx.controls,javafx.fxml -d out -sourcepath src src/**/*.java
-d out:指定编译后的class文件输出到out目录-sourcepath src:告诉javac源文件的根目录,确保能找到所有自定义包(CoreFramework、CoreUtils等)- 若你的shell不支持
**通配符,可逐个指定源文件路径:src/CoreUtils/*.java src/CoreFramework/*.java src/MyCompanyApp/*.java src/Logging/*.java src/Utils/*.java
2. 生成可执行JAR文件
编译完成后,使用jar命令打包class文件,同时指定项目主类:
# 进入编译输出目录out cd out # 生成JAR文件,指定主类并打包所有class文件 jar cvfe ../MyCompanyApp.jar MyCompanyApp.LaunchLogin *
cvfe:c(创建新JAR)、v(输出打包详情)、f(指定JAR文件名)、e(指定主类)../MyCompanyApp.jar:将生成的JAR文件放到项目根目录MyCompanyApp.LaunchLogin:替换为你项目实际的主类(若主类是Main则改为MyCompanyApp.Main)*:打包out目录下所有class文件和子目录
3. 运行生成的JAR文件
若要运行该JAR,需指定JavaFX的模块路径:
java --module-path "<Path to project>\lib" --add-modules javafx.controls,javafx.fxml -jar "<Path to project>\MyCompanyApp.jar"
内容的提问来源于stack exchange,提问作者Satish Kamuju
相关产品推荐
相关产品推荐

