java 神秘的类路径行为

java mysterious classpath behavior

我未能指定 class 路径。这是我的设置:

文件:"root/src/hello/German.java"

   package hello;
   public class German {
        public void greet() { System.out.println("Hallo"); }
   }

我在"root"中编译这个:

> javac root/src/hello/German.java -d root/package

其中 "root/package/hello" 作为空目录存在。美好的。现在想测试写

文件:"root/test/testHello.java"

import hello.German;
public class helloTest {
    public static void main(String[] args) {
        German guy = new German();
        guy.greet();
    }
}

我编译

> javac testHello.java -cp ../package

总而言之,我有:

  1. root/package/hello/German.class
  2. root/test/helloTest.class

我在"root/test/"执行:

 > java testHello                      => class not found except.
 > java testHello -cp ../package       => class not found except.
 > java testHello -cp ../package/hello => class not found except.

但是,将 'hello' 目录复制到 test 中,这样就有

  1. root/test/hello/German.class
  2. root/test/helloTest.class

可以在"root/test/"

执行
 > java testHello

它用德语友好地打招呼。不过,我想指定 class 路径。但是,我不知道为什么不接受“-cp”和“-classpath”。

试试这个:

java -classpath .:../package testHello

.:../package 使用当前目录,../package 作为类路径。