Java编译/包/命名空间错误

Java编译/包/命名空间错误,java,compiler-errors,packages,Java,Compiler Errors,Packages,这是基本Java有史以来最愚蠢、最简单的问题,但我做错了什么 在一个名为 com/myname/robos - Robo.java - Arena.java Robo.java: package com.myname.robos; public class Robo { public void fala() { System.out.println("Gleep Beep Boop!"); } } Arena.java: package com.

这是基本Java有史以来最愚蠢、最简单的问题,但我做错了什么

在一个名为

com/myname/robos
   - Robo.java
   - Arena.java
Robo.java:

package com.myname.robos;   

public class Robo {
  public void fala() {
    System.out.println("Gleep Beep Boop!");     
  }
}
Arena.java:

package com.myname.robos;

import com.myname.robos.Robo;

public class Arena {

    public static void main(String[] args) {
        Robo r2 = new Robo();
        r2.fala();
    }
}
当我尝试:

javac Robo.java 
它编译

当我试着

javac Arena.java
我明白了

Arena.java:3: error: cannot find symbol
import com.myname.robos.Robo;
                            ^
  symbol:   class Robo
  location: package com.myname.robos
Arena.java:8: error: cannot find symbol
        Robo r2 = new Robo();
        ^
  symbol:   class Robo
  location: class Arena
Arena.java:8: error: cannot find symbol
        Robo r2 = new Robo();
                      ^
  symbol:   class Robo
  location: class Arena
3 errors
我知道这是关于目录/包等名称之间不兼容的错误


但我还是没弄对。我应该写什么?

您需要确保您的文件与包引用的结构相同,比如:

例如,如果您的.java文件位于../Desktop,则必须创建名为com、myname和robos的文件夹,然后将它们粘贴到那里,这样您的文件将位于../Desktop/com/myname/robos内

然后您只需要编译Arena.java并运行它:

$javac com/myname/robos/Arena.java

$javacom/myname/robos/Arena


将您定位在../Desktop

javac com/myname/robos/Robo.java
javac com/myname/robos/Arena.java
,阅读
classpath
sourcepath
选项以
javac
。我必须从路径之外运行编译器?您必须以这样的方式运行编译器以保留路径。阅读精美手册。它记录了如何使用
javac
。请阅读精美手册。谢谢。好的手册是什么?文档。这是一个通用的术语,在编程界很流行。不确定您对路径的指示是什么,但最好不要像您似乎所指示的那样从包层次结构的深层次
javac
。您希望从包层次结构的根进行编译,或者使用
classpath
和/或
sourcepath
选项将其设置为直接。这个答案不正确。好的,你是对的,编辑。您可以从包层次结构的根进行编译,但是,在这种情况下,需要在javac命令中建立层次结构本身。
java
需要一个完全限定的类名作为参数,而不是文件系统路径。在这些命令的开头,您用
。/Desktop
指示什么?这不应该是命令的一部分。在发布示例之前,您是否运行过它们?它不是,它只是posible location的一个示例,它不是javac命令的一部分,但您将其作为命令的一部分显示。我不明白。