当java类位于包中时,必须在包根目录下执行java命令,并使用完整类名(含包路径),否则会因类路径错误导致noclassdeffounderror或classnotfoundexception。
Java 的类加载机制严格依赖目录结构与包声明的一致性。以您提供的 Some.java 为例:
package com.work;
class Some {
public static void main(String... args) {
System.out.println("Hello World");
}
}
该文件需保存在路径 com/work/Some.java(即 com 是子目录,work 是其子目录)。编译时,无论当前在哪个目录,只要路径正确,均可执行:
javac com/work/Some.java
这将生成 com/work/Some.class —— 注意:.class 文件必须保留与包结构完全一致的嵌套目录结构。
✅ 正确运行方式(关键!):
必须从 com 的父目录(即包根的上一级)执行 java 命令,并使用全限定类名(com.work.Some),而非 Some:
立即学习“Java免费学习笔记(深入)”;