<< Chapter < Page Chapter >> Page >

When I first started developing my own packages, I spent about seven hours trying to determine why the compiler wouldn't recognize the top-levelfolder in my hierarchy of package folders.

I consulted numerous books by respected authors and none of them was any help at all. I finally found the following statement in the Java documentation (when all else fails, read the documentation) . By the way, a good portion of that wasted seven hours was spent trying to find this information in thedocumentation which is voluminous.

The following text was extracted directly from the JDK 1.1 documentation

If you want the CLASSPATH to point to class files that belong to a package, you should specify a path name that includes the path to thedirectory one level above the directory having the name of your package.

For example, suppose you want the Java interpreter to be able to find classes in the package mypackage. If the path to the mypackagedirectory is C:\java\MyClasses\mypackage, you would set the CLASSPATH variable as follows:

set CLASSPATH=C:\java\MyClasses

If you didn't catch the significance of this, read it again. When you are creating a classpath variable to point to a folder containing classes, itmust point to the folder. However, when you are creating a classpath variable to point to your package, it must point to the folder that isone level above the directory that is the top-level folder in your package.

Once I learned that I had to cause the classpath to point to the folder immediately above the first folder in the hierarchy that I was includingin my package directives, everything started working.

The package directive

So, what is the purpose of a package directive, and what does it look like?

Purpose of a package directive

The purpose of the package directive is to identify a particular class (or group of classes contained in a single source file (compilation unit)) as belonging to a specific package.

This is very important information for a variety of reasons, not the least of which is the fact that the entire access control systemis wrapped around the concept of a class belonging to a specific package. For example, code in one package can only access public classes ina different package.

Stated in the simplest possible terms, a package is a group of class files contained in a single folder on your hard drive.

At compile time, a class can be identified as being part of a particular package by providing a package directive at the beginning of thesource code..

A package directive, if it exists, must occur at the beginning of the source code (ignoring comments and white space) . No text other than comments and whitespace is allowed ahead of the package directive.

If your source code file does not contain a package directive, the classes in the source code file become part of the default package . With the exception of the default package, all packageshave names, and those names are the same as the names of the folders that contain the packages. There is a one-to-one correspondence between foldernames and package names. The default package doesn't have a name.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask