这个问题在这里已有答案:
我有一个非常简单的类文件(.class),我完全相信它工作正常,当我评论包分配时:
package com.domain.core;
public class Challenge {
public static final int ID = (int) Math.abs(Math.random()*10);
public static void getDescription() {
System.out.println("Challenge ID: " + ID);
}
public static void main(String args[]) {
getDescription();
}
}
我正在通过常规的CMD在Windows机器上测试它。没有指定全局CLASSPATH。我已将.class文件放在C盘内的“myclasses”目录中。所以上课的路径是:“C:\ myclasses”
这里的目的是使用jvm的-classpath选项运行该类。我检查了以下几种方法:
在C盘内:
在目录“C:\ myclasses”中
用-classpath替换-cp会产生相同的结果:
Error: Could not find or load main class com.domain.core.Challenge
JVM:
C:\>java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
真奇怪的问题。你们能指出我在这里做错了吗?
谢谢!
JVM期望在类路径中的目录的Challenge.class
子目录中找到com/domain/core
文件,而不是直接在类路径中的目录中。因此,如果你在C:\myclasses
有它,它不是预期的。您需要将其移动到C:\myclasses\com\domain\core
并在类路径中指定C:\myclasses
。