Java导入子子目录

Pet*_*ang 3 java

我的目录结构如下所示:

folder
????subfolder
    ????subsubfolder
Run Code Online (Sandbox Code Playgroud)

我有一个Main.java folderMain.java使用里面的类subsubfolder.我是这样做的:

import subfolder.*;
import subfolder.subsubfolder.*;
Run Code Online (Sandbox Code Playgroud)

但是,当我执行时,我收到了消息 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
Run Code Online (Sandbox Code Playgroud)

我导入类文件的方式有误吗?

aio*_*obe 7

它说 package subfolder

包裹声明Node应该说

package subfolder.subsubfolder;
Run Code Online (Sandbox Code Playgroud)

提供一个清晰的例子:

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 { ... }
Run Code Online (Sandbox Code Playgroud)

如果你Main确实生活在一个包裹中(即如果你的情况是这样的话src/folder/Main.java)那么你就不应该这样

cd src/folder
javac Main.java
Run Code Online (Sandbox Code Playgroud)

你应该做

cd src
javac folder/Main.java
Run Code Online (Sandbox Code Playgroud)