This may be a simple issue, but Google has returned nothing.
I have read Help with packages in java - import does not work
I still don't understand why a direct import will work but wildcard will not. [EDIT] By class package I mean a package of classes. I am still new to Java so I do not know the semantics [EDIT]
I have a class package: com.company.functions
, when I try to import com.company.*
I receive the following error.
java: package com.company does not exist
If I import com.company.function
explicitly then I have no issues.
So I suppose that I have a solution but for the sake of learning, could someone explain why I see this issue?
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
In java, you can import an entire package:
Or you can import a specific member of a package
Don't confuse the dots in package names with the member access operator - they're just literal dots. You can't try to import multiple packages by breaking apart the package names.
It sounds like you're trying to import a package that contains no classes, but only contains sub-packages.
i.e. You have classes in
com.company.functions
- e.g.com.company.functions.Foo
But no classes directly in
com.company
- e.g.com.company.Bar
Despite that fact that java packages appear to be hierarchical, for the purposes of imports, they aren't.
So, you cannot import
com.company.*
because it contains no classes of its own.You can import
com.company.functions.*
because it does contain classesAnd you can import
com.company.functions.Foo
because that is a class.Now, you might be tempted create a
Bar
class incom.company
. That would allow you to importcom.company.*
But because imports are not treated hierarchically, that wouldn't cause classes in
com.company.functions
to be importedYou would still need to explictly import
com.company.functions.Foo
, or wildcard importcom.company.functions.*