java classpath不能像记录的那样工作[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我有一个非常简单的类文件(.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盘内:

  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

用-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)

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

谢谢!

java class jvm classpath
1个回答
1
投票

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

这是as documented

© www.soinside.com 2019 - 2024. All rights reserved.