Ubuntu命令行编译IntelliJ开发Java项目提示package不存在报错求助
错误原因
- 仅编译了src根目录下的
main.java,未包含ADT、FileIO、InteractiveMode等子目录下的Java源文件,对应包的类没有被编译,因此javac无法识别包定义 - 依赖路径的通配符写法错误,原命令中
lib/.jar的写法无法匹配任何jar包,同时未将当前src目录加入类路径,导致javac无法对应包目录结构
解决方法
1. 修正编译命令
在src目录下执行以下命令完成全量编译:
javac -cp .:javafx-sdk-17.0.0.1/lib/*:JavaFXSmartGraph-0.9.4/* $(find . -name "*.java")
参数说明:
-cp .:将当前src目录加入类路径,让javac可以匹配对应层级的包目录结构- 依赖路径直接用
*匹配目录下所有jar包,无需额外加.jar后缀 $(find . -name "*.java"):递归查找当前目录下所有Java源文件,包含所有子包的代码全部加入编译队列
如果希望编译生成的class文件和源文件分离,可以添加-d参数指定输出目录,示例如下:
mkdir -p classes javac -d classes -cp .:javafx-sdk-17.0.0.1/lib/*:JavaFXSmartGraph-0.9.4/* $(find . -name "*.java")
2. 执行运行命令
JavaFX 17属于独立外部模块,运行时需要额外指定模块参数,全量运行命令如下:
# 编译未指定输出目录时执行 java -cp .:javafx-sdk-17.0.0.1/lib/*:JavaFXSmartGraph-0.9.4/* --module-path javafx-sdk-17.0.0.1/lib --add-modules javafx.controls,javafx.fxml,javafx.graphics main # 如果编译时指定了输出到classes目录,执行以下命令 java -cp classes:javafx-sdk-17.0.0.1/lib/*:JavaFXSmartGraph-0.9.4/* --module-path javafx-sdk-17.0.0.1/lib --add-modules javafx.controls,javafx.fxml,javafx.graphics main
可根据项目实际使用的JavaFX模块调整--add-modules后的模块列表。
内容的提问来源于stack exchange,提问作者marcus
相关产品推荐
相关产品推荐

