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
总而言之,我有:
- root/package/hello/German.class
- 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 中,这样就有
- root/test/hello/German.class
- root/test/helloTest.class
我可以在"root/test/"
执行
> java testHello
它用德语友好地打招呼。不过,我想指定 class 路径。但是,我不知道为什么不接受“-cp”和“-classpath”。
试试这个:
java -classpath .:../package testHello
.:../package
使用当前目录,../package
作为类路径。
我未能指定 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
总而言之,我有:
- root/package/hello/German.class
- 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 中,这样就有
- root/test/hello/German.class
- root/test/helloTest.class
我可以在"root/test/"
执行 > java testHello
它用德语友好地打招呼。不过,我想指定 class 路径。但是,我不知道为什么不接受“-cp”和“-classpath”。
试试这个:
java -classpath .:../package testHello
.:../package
使用当前目录,../package
作为类路径。