Ubuntu 20.04中apt安装的NetBeans运行项目时提示找不到主类
问题概述
- 运行环境:Ubuntu 20.04.2 LTS,
openjdk 11.0.10 2021-01-19,通过sudo apt install netbeans安装的Apache NetBeans IDE 10.0 - 操作流程:跟随NetBeans基础教程新建Java项目,勾选「创建主类」复选框,编写Hello World代码如下:
package javaapplication5; public class JavaApplication5 { public static void main(String[] args) { System.out.print("Hello world!"); } }
- 异常现象:
- 尝试运行代码时,弹出错误提示「在JavaApplication5项目中找不到javaapplication5.JavaApplication5类」
- 右键项目选择「运行」、手动指定待运行类时,目标类完全不出现在可选列表中
- 配有问题相关操作截图
- 执行项目构建后,输出窗口显示编译、打包全部成功,日志如下:
ant -f /home/marco/NetBeansProjects/JavaApplication6 -Dnb.internal.action.name=rebuild clean jar init: deps-clean: Updating property file: /home/marco/NetBeansProjects/JavaApplication6/build/built-clean.properties Deleting directory /home/marco/NetBeansProjects/JavaApplication6/build clean: init: deps-jar: Created dir: /home/marco/NetBeansProjects/JavaApplication6/build Updating property file: /home/marco/NetBeansProjects/JavaApplication6/build/built-jar.properties Created dir: /home/marco/NetBeansProjects/JavaApplication6/build/classes Created dir: /home/marco/NetBeansProjects/JavaApplication6/build/empty Created dir: /home/marco/NetBeansProjects/JavaApplication6/build/generated-sources/ap-source-output Compiling 1 source file to /home/marco/NetBeansProjects/JavaApplication6/build/classes compile: Created dir: /home/marco/NetBeansProjects/JavaApplication6/dist Copying 1 file to /home/marco/NetBeansProjects/JavaApplication6/build Building jar: /home/marco/NetBeansProjects/JavaApplication6/dist/JavaApplication6.jar To run this application from the command line without Ant, try: /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp /home/marco/NetBeansProjects/JavaApplication6/dist/JavaApplication6.jar javaapplication6.JavaApplication6 deploy: jar: BUILD SUCCESSFUL (total time: 1 second)
- 手动执行日志中给出的java运行命令,程序可正常输出结果
- 临时验证结果:替换为Apache官方发布的NetBeans版本后,可正常创建主类、编译运行项目,但暂不明确两种版本的差异
故障原因
- 版本适配缺陷:Ubuntu apt源提供的NetBeans 10.0发布于2018年,原生支持范围为Java 8/10,对OpenJDK 11的类路径扫描、主类自动探测逻辑存在已知兼容性问题,无法正确识别已编译的主类。
- 系统打包裁剪:Ubuntu官方为遵循Debian系包管理规范,对上游NetBeans进行了功能裁剪,移除了部分主类关联、运行入口配置的核心组件,导致IDE无法正确关联可运行的类文件。
- 运行配置缺失:apt打包的NetBeans默认生成的项目配置中,未自动填充主类路径参数,运行时默认查找的类路径与实际编译输出的类路径不匹配,触发找不到类的错误。
解决方案
- 优先方案:卸载apt安装的NetBeans,使用Apache官方发布的原生版本。该版本功能完整,对OpenJDK 11及以上版本的兼容性更好,可自动识别主类、完成运行配置。
- 临时补救方案(继续使用apt安装版本时):
- 右键项目选择「属性」→「运行」,在「主类」输入框手动填写完整类路径
javaapplication5.JavaApplication5,保存后即可正常运行。 - 切换JDK版本为OpenJDK 8,匹配NetBeans 10的原生适配范围,避免兼容问题。
- 右键项目选择「属性」→「运行」,在「主类」输入框手动填写完整类路径
两种安装版本的核心差异
- apt源安装版本:为Ubuntu官方二次打包的适配版本,版本更新滞后,功能经过裁剪,仅适配系统级包管理规范,对新JDK的兼容性差。
- Apache官方版本:为上游原生发布版本,功能完整,支持自动更新,可适配最新的JDK版本,适合Java开发场景使用。
内容的提问来源于stack exchange,提问作者Marco Antnio Barra Montevechi
相关产品推荐
相关产品推荐

