java classpath不能按记录工作

时间:2018-09-11 14:39:37

标签: java class jvm classpath

我有一个非常简单的类文件(.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。我在C驱动器的“ myclasses”目录中找到了.class文件。因此,该类的路径为:“ C:\ myclasses”

此处的目的是使用jvm的-classpath选项运行该类。我检查了以下方法:

在C盘中:

  1. java -cp“ \ myclasses” com.domain.core.Challenge
  2. java -cp \ myclasses com.domain.core.Challenge
  3. java -cp。\ myclasses com.domain.core.Challenge
  4. java -cp“。\ myclasses” com.domain.core.Challenge
  5. java -cp“ / myclasses” com.domain.core.Challenge
  6. java -cp / myclasses com.domain.core.Challenge
  7. java -cp ./myclasses com.domain.core.Challenge
  8. java -cp“ ./myclasses” com.domain.core.Challenge

在目录“ C:\ myclasses”内

  1. java -cp“ C:\ myclasses” com.domain.core.Challenge
  2. java -cp C:\ myclasses com.domain.core.Challenge
  3. java -cp“ C:/ myclasses” com.domain.core.Challenge
  4. java -cp C:/ myclasses com.domain.core.Challenge

将-cp替换为-classpath的结果相同:

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)

真的很奇怪。你们能指出我在这里做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

JVM希望在类路径中目录的Challenge.class子目录中找到com/domain/core文件,而不是直接在类路径中的目录中找到。因此,如果您将其放在C:\myclasses中,则它不是预期的位置。您需要将其移至C:\myclasses\com\domain\core并在类路径中指定C:\myclasses

这是as documented