带UTF-8编码的Java包类编译后运行找不到主类问题求助
解决带包Java类的命令行编译运行问题
核心问题根源
你的Übung13类属于übung1包,命令行运行时必须严格匹配包结构和字符编码,同时编译阶段要保证生成对应包路径的class文件。
分步解决方案
1. 确认类的包声明正确性
检查Übung13.java开头的包声明,必须与文件夹名完全一致(包含特殊字符和大小写):
package übung1; public class Übung13 { public static void main(String[] args) { // 主方法逻辑 } }
2. 正确编译(生成对应包结构)
不要在übung1文件夹内编译,切换到src目录执行命令:
- 打开命令行,进入路径:
eclipse-workspace\Übungen\src - 执行编译命令,指定编码并生成包结构:
javac -encoding UTF-8 übung1/Übung13.java -d .
-d .表示将编译后的class文件生成在当前目录(src下),自动创建übung1文件夹存放class文件,与包结构对应。
3. 正确运行(匹配包名与编码)
同样在src目录下执行运行命令,若命令行编码不支持德语字符,先设置编码:
# Windows命令行先执行此命令切换UTF-8编码 chcp 65001 # 运行类,格式为「包名.类名」 java übung1.Übung13
失败原因说明
- 直接在
übung1文件夹编译,未生成对应包结构,Java虚拟机无法识别类的包归属。 - 类名/包名含特殊字符,命令行编码非UTF-8时会导致字符识别错误,进而找不到类。
验证标准
编译完成后,src目录下会生成übung1文件夹,其中包含Übung13.class文件,此时执行运行命令即可正常启动程序。
内容的提问来源于stack exchange,提问作者khalifakush
相关产品推荐
相关产品推荐

