Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从cmd执行时java类的位置_Java - Fatal编程技术网

从cmd执行时java类的位置

从cmd执行时java类的位置,java,Java,我在mypack包中有两个java类A和B package mypack class A { public static void main (String args[]) { B b = new B(); ... } } package mypack class B {....} 从控制台编译时,我会这样做 javac -cp somepath .\mypack\*.java 这将在mypack文件夹中为我生成类文件。现在,如果我尝试使用

我在mypack包中有两个java类A和B

package mypack
class A {
   public static void main (String args[]) {
    B b = new B();
     ...  
        }
   }

package mypack
class B {....}
从控制台编译时,我会这样做

javac -cp somepath .\mypack\*.java
这将在mypack文件夹中为我生成类文件。现在,如果我尝试使用此命令运行mypack文件夹中的.class文件

java -cp somepath mypack.A
我会得到这个错误这个错误

错误:无法找到或加载主类mypack.A

但是如果我将类文件从mypack文件夹移动到它的父文件夹并再次执行这一行

java -cp somepath mypack.A
它将正确执行

有人能给我解释一下为什么会这样吗

关于,


es

-cp允许您指定类文件的位置。为了使用-cp somepath,您必须具有以下结构

somepath
|
+-mypack
  |
  +- A.class
  +- B.class
编译后,您可以将类文件(带有反映包的目录结构)放在任何您喜欢的地方

更新:

是的,这是正确的。您不必将编译后的类放入“somepath”。您可以使用任何您喜欢的位置。事实上,你可以这样做:

> javac -d target .\mypack\*.java # this will put 
                                  # compiled classes inside "target"
然后,您可以这样运行代码:

> java -cp target mypack.A

您可以放置任意位置,而不是“target”。

我认为您需要澄清classpath参数的确切含义,以及运行java命令的当前目录。我发现这很难相信。虽然你不必把mypack放在somepath文件夹中,但是由于这让我找到了正确的答案,所以我把它标记了。我只需要在-cp中添加正确的路径,如下:-cp“somepath”;“mypack父文件夹的路径”