Can';t在java中导入子包
有人能帮我解决这个问题吗Can';t在java中导入子包,java,Java,有人能帮我解决这个问题吗 我无法导入子包,当我尝试javac Pixel.java时,我得到: Pixel.java:2:错误:包image.color不存在 我还尝试了import image.*和import image.color.* Pixel.java: package image; import image.color.GrayColor; public class Pixel{ } GrayColor.java: package image.color; public cl
我无法导入子包,当我尝试
javac Pixel.java
时,我得到:
Pixel.java:2:错误:包image.color不存在
我还尝试了import image.*
和import image.color.*代码>
Pixel.java:
package image;
import image.color.GrayColor;
public class Pixel{
}
GrayColor.java:
package image.color;
public class GrayColor{
}
我的树:
└── 图像
├── Pixel.java
├── 颜色
├── 灰色。类
└── GrayColor.java
很可能不是从项目的根目录编译Pixel.java
,而是从该文件所在的目录(image/
)编译。在这种情况下,image/
中没有与包声明image/color
匹配的目录结构,因为您没有image/image/color
包声明必须与声明它们的目录结构相匹配(相对于根目录),因为它们是相对于项目的根目录进行查找的。例如,如果您正在编译A.java
,它具有在包A.B下定义的依赖项B.java
(A导入B)
,则B.java
将在相应的a/B/
文件夹中查找,如果您在该文件夹中,从那里,a/B/
不可用,编译器将抱怨,它找不到包/目录a/B/
使用javac
时,有两种方法可以解决此问题:
- 最好是从根目录编译文件。这样,所有包声明都将与根目录相对应的目录结构相匹配(假设包名正确且与目录名匹配)李>
- 如果您不是从项目的根目录编译文件,您可以使用
-cp
标志告诉Java编译器在哪里查找其他源。请注意,在这里,您还应该提供项目根目录的路径,因为从项目根目录中查找时,类包将仅与文件夹结构匹配
很可能,您不是从项目的根目录编译Pixel.java
,而是从该文件所在的目录(image/
)编译它。在这种情况下,image/
中没有与包声明image/color
匹配的目录结构,因为您没有image/image/color
包声明必须与声明它们的目录结构相匹配(相对于根目录),因为它们是相对于项目的根目录进行查找的。例如,如果您正在编译A.java
,它具有在包A.B下定义的依赖项B.java
(A导入B)
,则B.java
将在相应的a/B/
文件夹中查找,如果您在该文件夹中,从那里,a/B/
不可用,编译器将抱怨,它找不到包/目录a/B/
使用javac
时,有两种方法可以解决此问题:
- 最好是从根目录编译文件。这样,所有包声明都将与根目录相对应的目录结构相匹配(假设包名正确且与目录名匹配)李>
- 如果您不是从项目的根目录编译文件,您可以使用
-cp
标志告诉Java编译器在哪里查找其他源。请注意,在这里,您还应该提供项目根目录的路径,因为从项目根目录中查找时,类包将仅与文件夹结构匹配
从image.color.*中删除图像,然后重试javac Pixel。java
不正确。通常,您可以从父文件夹执行javac image/Pixel.java
,但也可以执行javac-cp。。来自image
文件夹的Pixel.java
。的副本。从image.color.*中删除图像并重试javac Pixel.java
不正确。通常,您可以从父文件夹执行javac image/Pixel.java
,但也可以执行javac-cp。。Pixel.java
来自图像
文件夹。的副本。