Microsoft KB Archive/162129

= How To Handling Packages with the Visual J++ Compiler =

Article ID: 162129

Article Last Modified on 5/12/2007

-

APPLIES TO


 * Microsoft Visual J++ 1.0 Standard Edition
 * Microsoft Visual J++ 1.1 Standard Edition

-



This article was previously published under Q162129



SUMMARY
When the Visual J++ compiler, Jvc.exe, sees a package statement, it automatically creates the directory structure needed for the package declared. The .class files that define the classes in the package must be placed in this directory structure. By default, they are not placed in the correct directory. You must specify an output directory to tell the compiler where to place the .class files.



MORE INFORMATION
The .class files that define the classes in a package must be placed in a directory that matches the package name. For example if you were to define a package called "animals.dogs," the .class files that define the classes in this package must be located in the "animals\dogs" directory.

In order for the compiler to place the .class files in the correct directory, you must specify an output directory by clicking Settings on the Build menu. The Project Settings dialog box appears. Click the General tab if it is not already selected.

You will see two edit boxes, the second of which is labeled "Output Directory." The directory entered here is used as the root of the directory structure created for a package. If using the command line, Jvc.exe has a "/d" command line switch that lets you specify the output directory. You can also use a "." as the output directory and the compiler creates the necessary directories under the current structure and places the .class files there.

Thus if you entered c:\msdev\projects\packtest for the output directory, and you compiled a .class file with the package statement above, the following directory is created:   c:\msdev\projects\packtest\animals\dogs The resulting class files are placed in this directory.

When compiling a class file that imports a package, the compiler searches the directories in the classpath for a directory that matches the name of the imported package. It then looks in that directory for the class files that define the class. If the class file cannot be found, the compiler gives J0049 (Undefined Name) and J0044 (Cannot find definition for class) errors.

Note that only the top-most directory in a package directory structure must be in a directory that's listed in the classpath. Continuing on with the animals.dogs sample, only the directory that contains the animals directory must be listed in the classpath (that is, c:\msdev\projects\packtest must be in the classpath). Once the compiler finds the animals directory it knows how to find the .class files in the subdirectories of animals. When searching for directories, Microsoft Developer's Studio (MSDEV) makes sure that the current project directory appears in the classpath.

When running an application or an applet, the Microsoft virtual machine similarly searches the classpath for the needed .class files. Since the root directory of the package hierarchy must be in the classpath, it's a good idea to have a central location for all packages. When you installed Visual J++, one was created for you:   c:\\Java\Classes This directory is automatically included in the classpath. If you choose not to use a central repository, each time you create a package, you must add an additional entry to your classpath.

