Java编译/包/命名空间错误
这是基本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.
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命令的一部分,但您将其作为命令的一部分显示。我不明白。