我的目录结构是这样的:
folder
└───subfolder
└───subsubfolder
我在 folder
中有一个 Main.java,而 Main.java
使用 subsubfolder
中的类。
这是我的做法:
import subfolder.*;
import subfolder.subsubfolder.*;
但是,当我执行 javac Main.java
$ javac -g Main.java
Main.java:23: error: cannot access Node
Node root = new Node();
^
bad class file: ./subfolder/subsubfolder/Node.class
class file contains wrong class: subsubfolder.Node
Please remove or make sure it appears in the correct subdirectory of the classpath.
1 error
是不是我导入class文件的方式不对?
最佳答案
It says
package subfolder
Node
的封装声明应该说
package subfolder.subsubfolder;
为清楚起见提供示例:
folder/
Your source root (typically called 'src')
folder/Main.java
class Main { ... } (no package declaration)
folder/subfolder
folder/subfolder/subsubfolder/Node.java
package subfolder.subsubfolder;
public class Node { ... }
如果您的 Main
确实生活在一个包裹中(即如果你的情况类似于 src/folder/Main.java
)那么你应该不做
cd src/folder
javac Main.java
你应该做的
cd src
javac folder/Main.java
关于java导入子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432953/