导致“找不到或无法加载主类”异常的原因有哪些

导致“找不到或无法加载主类”错误的原因有哪些?
除了“classpath环境变量没有加入当前目录”,此问题我已经确认。是否还有其它原因导致,为了更好的获得大家的帮助,我将代码贴出。

由编译文件Cookie.java、Dinner.java两个文件组成
Cookie.java文件如下:
//: access/dessert/Cookie.java
package access.dessert;

public class Cookie {
  Cookie() {
   System.out.println("Cookie constructor");
  }
  void bite() { System.out.println("bite"); }
} ///:~

Dinner.java文件如下:
//: access/Dinner.java
// Uses the library.
package access.dessert;
//import access.dessert.*;

public class Dinner {
  public static void main(String[] args) {
    Cookie x = new Cookie();
    //! x.bite(); // Can't access
  }
}

如上文件能编译过,
执行命令:java Dinner,提示“找不到或无法加载主类”。
------解决方案--------------------
架设你的java文件都放到D:/javatest/access/dessert   这个目录下( access/dessert这两层目录必须存在,因为你的package限制了),你编译完,要回到D:/javatest目录下,然后执行 java  access.dessert.Dinner 即可。
------解决方案--------------------
到 access.dessert 目录外面,也就是源码的src目录下面
使用 javac 编译, java 执行

D:\jaabc\src>javac com/main/Hello.java

D:\jaabc\src>java com.main.Hello
Hello World
id= 123, name= nimei

D:\jaabc\src>
 
编译时,使用/ 分割包的层次目录
执行时,使用. 分割包的层次目录