我正在处理 Eclipse 中的一些 Java 代码。代码包含在一个名为 的类Adder中,它在 Eclipse 中位于包中org.processing。类文件中的第一件事是行
package org.processing
Q1) 这条线到底在做什么?为什么会有,它的作用是什么。
代码在 Eclipse 中运行良好,但是,当我进入工作区时,如果我进入 中的src/org/processing/文件夹,当我尝试使用运行时进行src编译,我得到以下错误javac Adder.classjava 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. 现在,我确定我在这里错过了重点,所以如果有人能指出它是什么,那就太好了。