这可能是一个简单的问题,但Google没有返回任何内容。
我已阅读Help with packages in java - import does not work
我仍然不明白为什么直接导入会起作用但是通配符不会。 [编辑] 通过类包我的意思是一个类包。我还是Java的新手,所以我不知道语义 [编辑]
我有一个类包:com.company.functions
,当我尝试import com.company.*
时,我收到以下错误。
java: package com.company does not exist
如果我明确导入com.company.function
,那么我没有任何问题。
所以我想我有一个解决方案,但为了学习,有人可以解释为什么我会看到这个问题吗?
IDE:IntelliJ IDEA 12
import com.sociapathy.*; <--Throws compile error java: package com.sociapathy does not exist
import com.sociapathy.databaseAccess.MySQL; <--Works just fine
答案 0 :(得分:6)
听起来你正在尝试导入一个不包含类的包,但只包含子包。
即。您有com.company.functions
- 中的课程,例如 com.company.functions.Foo
但是没有类直接在com.company
- ,例如 com.company.Bar
尽管java包看起来是分层的,但出于导入的目的,它们不是。
因此,您无法导入com.company.*
,因为它不包含任何类别
您可以导入com.company.functions.*
,因为它确实包含类
您可以导入com.company.functions.Foo
,因为这是一个类。
现在,您可能会在Bar
中创建一个com.company
类。
这样就可以导入com.company.*
但因为不会对层次结构进行处理,因此不会导致导入com.company.functions
中的类
您仍然需要明确导入com.company.functions.Foo
或通配符导入com.company.functions.*
答案 1 :(得分:1)
在java中,您可以导入整个包:
import package.name.*;
或者您可以导入包的特定成员
import package.name.class_name;
不要将包名称中的点与成员访问操作符混淆 - 它们只是文字点。您不能通过拆分包名来尝试导入多个包。
import package.*; //doesn't work
import packa*; //doesn't work for the same reason