Enthuware Mock-20 Confusion -classpath和包

时间:2013-11-22 13:52:52

标签: java classpath

我正在使用enthuware来练习类路径和包的模拟问题。这是问题所在。

//in file ./Foo.java
public class Foo {
  public static void main(String[] args) {
    System.out.println("In Foo");
  } 
}

//in file ./com/Foo.java
package com;
public class Foo {
  public static void main(String[] args) {
    System.out.println("In com.Foo");
  } 
}

Which of the given statements are correct assuming that the command lines are executed from the current directory with default classpath set to ./classes?

给出的选项是

  1. 执行java -classpath。:./ com Foo将打印“In com.Foo”
  2. 执行java -classpath ./com:。 Foo将打印“In com.Foo”
  3. 执行java Foo将打印“In com.Foo”
  4. java -classpath。 com.Foo不会执行。
  5. 执行java -classpath ./com:。 com.Foo将打印“In com.Foo”
  6. 给出的正确选项是选项-5。奇怪的问题是当我尝试从命令行执行option-5时,它会给我以下错误。 Option-5 Execution Error

    有人能告诉我什么是错的吗?我无法弄清楚原因。再加上这是什么 ./com类路径是什么意思?

    命令更改

    我注意到一件奇怪的事情,如果我更改类路径并以

    运行命令
    java -classpath . com.Foo
    

    它指出in com.Foo。只要我更改命令以添加此路径./com。它给出了上面提到的错误。

    感谢。

1 个答案:

答案 0 :(得分:0)

“./ com”是当前路径的相对路径。

如果你的班级在[current_path] /com/Foo.class

您可以使用以下命令运行您的类:

 java -classpath ./com com.Foo

如果您在com文件夹[current_path:com] /Foo.class中,则可以执行以下命令:

java -classpath . com.Foo