我正在处理 Eclipse 中的一些 Java 代码。代码包含在一个名为 的类Adder
中,它在 Eclipse 中位于包中org.processing
。类文件中的第一件事是行
package org.processing
Q1) 这条线到底在做什么?为什么会有,它的作用是什么。
代码在 Eclipse 中运行良好,但是,当我进入工作区时,如果我进入 中的src/org/processing/
文件夹,当我尝试使用运行时进行src
编译,我得到以下错误javac Adder.class
java Adder
java.lang.NoClassDefFoundError: Adder (wrong name: org/processing/Adder)
另一方面,如果我从 src 编译使用
javac org/processing/Adder.java
我可以从src
使用中运行它,java org.processing.Adder
但仍然不能从处理目录中运行。
Q2) 这是否意味着编译总是相对于目录结构?
最后,如果我 package org.processing
从开头删除该行,.class
我可以在文件目录中编译和运行该.class
文件。
Q3) 为什么会这样?我可以完全理解为代码开发强制执行目录结构,但是一旦您使用字节码,这似乎有点过头了,因为现在我(显然)只能src
使用java org.processing.Adder
. 现在,我确定我在这里错过了重点,所以如果有人能指出它是什么,那就太好了。