Java - 无法导入com.package。*(通配符)

时间:2013-06-07 04:06:59

标签: java import classpath

这可能是一个简单的问题,但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

2 个答案:

答案 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