Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| org.netbeans.api.java/1 1.10.22
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.netbeans.spi.java.classpath
Interface ClassPathProvider

    public interface ClassPathProvider

Provider interface for Java classpaths.

The `org.netbeans.modules.java.project` module registers an implementation of this interface to global lookup which looks for the project which owns a file (if any) and checks its lookup for this interface, and if it finds an instance, delegates to it. Therefore it is not normally necessary for a project type provider to register its own instance just to define the classpaths for files it owns, assuming it depends on the Java Project module.

Note that to make editor code completion functionality work for a Java source file the following classpaths must be available for it:

1. The `ClassPath.BOOT` type of classpath is required or the source file will not be parsable and code completion will be disabled. See also `SourceLevelQueryImplementation`.
2. The `ClassPath.SOURCE` type of classpath is required or code completion will be disabled. Providing this classpath will enable code completion, but only elements defined on this classpath will be offered if the compile classpath is missing.
3. The `ClassPath.COMPILE` type of classpath is recommended to be provide to make code completion work fully by suggesting all classes against which the source is developed.

`ClassPath.EXECUTE` is also recommended for e.g. I18N functionality to work. This should contain the full run-time classpath of the class, including its build location (bytecode).

You should return these classpaths for the package root folder and any files or folders inside it.

You should register classpaths for source files of all these types in `GlobalPathRegistry` when they are to be exposed in the GUI as available for use (e.g. for the editor's Fast Open dialog), and unregister them when they are no longer to be exposed. Typically this is done as part of ProjectOpenedHook.

It is also desirable to produce classpath information for compiled class files (bytecode), including their package roots (whether a disk folder or a JAR root). This will enable parsing of the class files, which is sometimes needed (e.g. for expanding the class file node and seeing its members). Compiled classes should have:

1. `ClassPath.BOOT` corresponding to the Java platform to be used with the classes.
2. `ClassPath.EXECUTE` containing the bytecode's package root itself, plus any other libraries it needs to resolve against. Should normally be the same as the execute classpath of the corresponding source files.

If no specific class path providers are available for a given source file or bytecode file, i.e. `null` is returned from all providers, there may be a fallback implementation which would provide reasonable defaults. For source files, this could mean a boot classpath corresponding to the default Java platform (i.e. the JDK being used to run the IDE); empty compile and execute classpaths; and a sourcepath computed based on the package statement in the source file (if this is possible). For class files, this could mean a boot classpath determined as for source files, and an execute classpath containing the package root apparently owning the class file (computed according to the class file's package information, if this is possible).

Since:
  org.netbeans.api.java/1 1.4
See Also:
  `ClassPath.getClassPath(org.openide.filesystems.FileObject, java.lang.String)`, `GlobalPathRegistry`

Method Summary
`ClassPath` | `findClassPath(FileObject file, String type)` Find some kind of a classpath for a given file.

Method Detail

### findClassPath

    ClassPath findClassPath(FileObject file,
                            String type)

  Find some kind of a classpath for a given file.

  Parameters:
    `file` - a file somewhere, or a source root
    `type` - a classpath type such as `ClassPath.COMPILE`
  Returns:
    an appropriate classpath, or null for no answer
  See Also:
    `ClassPathFactory`, `ClassPathSupport`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| org.netbeans.api.java/1 1.10.22
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Built on December 7 2006. | Portions Copyright 1997-2005 Sun Microsystems, Inc. All rights reserved.