Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse JDT Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.eclipse.jdt.core
Interface IJavaProject

All Superinterfaces:
  IAdaptable, IJavaElement, IOpenable, IParent

public interface IJavaProject
extends IParent, IJavaElement, IOpenable

A Java project represents a view of a project resource in terms of Java elements such as package fragments, types, methods and fields. A project may contain several package roots, which contain package fragments. A package root corresponds to an underlying folder or JAR.

Each Java project has a classpath, defining which folders contain source code and where required libraries are located. Each Java project also has an output location, defining where the builder writes `.class` files. A project that references packages in another project can access the packages by including the required project in a classpath entry. The Java model will present the source elements in the required project; when building, the compiler will use the corresponding generated class files from the required project's output location(s)). The classpath format is a sequence of classpath entries describing the location and contents of package fragment roots.

Java project elements need to be opened before they can be navigated or manipulated. The children of a Java project are the package fragment roots that are defined by the classpath and contained in this project (in other words, it does not include package fragment roots for other projects).

This interface is not intended to be implemented by clients. An instance of one of these handles can be created via `JavaCore.create(project)`.

See Also:
  `JavaCore.create(org.eclipse.core.resources.IProject)`, `IClasspathEntry`

Field Summary

Fields inherited from interface org.eclipse.jdt.core.IJavaElement
`CLASS_FILE, COMPILATION_UNIT, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVA_MODEL, JAVA_PROJECT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE`

Method Summary
`IJavaElement` | `findElement(IPath path)` Returns the `IJavaElement` corresponding to the given classpath-relative path, or `null` if no such `IJavaElement` is found.
`IJavaElement` | `findElement(IPath path, WorkingCopyOwner owner)` Returns the `IJavaElement` corresponding to the given classpath-relative path, or `null` if no such `IJavaElement` is found.
`IPackageFragment` | `findPackageFragment(IPath path)` Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, or `null` if none exist.
`IPackageFragmentRoot` | `findPackageFragmentRoot(IPath path)` Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, or `null` if one does not exist.
`IPackageFragmentRoot[]` | `findPackageFragmentRoots(IClasspathEntry entry)` Returns the existing package fragment roots identified by the given entry.
`IType` | `findType(String fullyQualifiedName)` Returns the first type found following this project's classpath with the given fully qualified name or `null` if none is found.
`IType` | `findType(String packageName, String typeQualifiedName)` Returns the first type found following this project's classpath with the given package name and type qualified name or `null` if none is found.
`IType` | `findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner)` Returns the first type found following this project's classpath with the given package name and type qualified name or `null` if none is found.
`IType` | `findType(String fullyQualifiedName, WorkingCopyOwner owner)` Returns the first type found following this project's classpath with the given fully qualified name or `null` if none is found.
`IPackageFragmentRoot[]` | `getAllPackageFragmentRoots()` Returns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.
`Object[]` | `getNonJavaResources()` Returns an array of non-Java resources directly contained in this project.
`String` | `getOption(String optionName, boolean inheritJavaCoreOptions)` Helper method for returning one option value only.
`Map` | `getOptions(boolean inheritJavaCoreOptions)` Returns the table of the current custom options for this project.
`IPath` | `getOutputLocation()` Returns the default output location for this project as a workspace- relative absolute path.
`IPackageFragmentRoot` | `getPackageFragmentRoot(IResource resource)` Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a `.jar` or `.zip` file.
`IPackageFragmentRoot` | `getPackageFragmentRoot(String jarPath)` Returns a package fragment root for the JAR at the specified file system path.
`IPackageFragmentRoot[]` | `getPackageFragmentRoots()` Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath.
`IPackageFragmentRoot[]` | `getPackageFragmentRoots(IClasspathEntry entry)` Deprecated. Use IJavaProject#findPackageFragmentRoots instead
`IPackageFragment[]` | `getPackageFragments()` Returns all package fragments in all package fragment roots contained in this project.
`IProject` | `getProject()` Returns the `IProject` on which this `IJavaProject` was created.
`IClasspathEntry[]` | `getRawClasspath()` Returns the raw classpath for the project, as a list of classpath entries.
`String[]` | `getRequiredProjectNames()` Returns the names of the projects that are directly required by this project.
`IClasspathEntry[]` | `getResolvedClasspath(boolean ignoreUnresolvedEntry)` This is a helper method returning the resolved classpath for the project as a list of simple (non-variable, non-container) classpath entries.
`boolean` | `hasBuildState()` Returns whether this project has been built at least once and thus whether it has a build state.
`boolean` | `hasClasspathCycle(IClasspathEntry[] entries)` Returns whether setting this project's classpath to the given classpath entries would result in a cycle.
`boolean` | `isOnClasspath(IJavaElement element)` Returns whether the given element is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.
`boolean` | `isOnClasspath(IResource resource)` Returns whether the given resource is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.
`IEvaluationContext` | `newEvaluationContext()` Creates a new evaluation context.
`ITypeHierarchy` | `newTypeHierarchy(IRegion region, IProgressMonitor monitor)` Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.
`ITypeHierarchy` | `newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)` Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner.
`ITypeHierarchy` | `newTypeHierarchy(IType type, IRegion region, IProgressMonitor monitor)` Creates and returns a type hierarchy for the given type considering subtypes in the specified region.
`ITypeHierarchy` | `newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)` Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner.
`IPath` | `readOutputLocation()` Returns the default output location for the project as defined by its `.classpath` file from disk, or `null` if unable to read the file.
`IClasspathEntry[]` | `readRawClasspath()` Returns the raw classpath for the project as defined by its `.classpath` file from disk, or `null` if unable to read the file.
`void` | `setOption(String optionName, String optionValue)` Helper method for setting one option value only.
`void` | `setOptions(Map newOptions)` Sets the project custom options.
`void` | `setOutputLocation(IPath path, IProgressMonitor monitor)` Sets the default output location of this project to the location described by the given workspace-relative absolute path.
`void` | `setRawClasspath(IClasspathEntry[] entries, IPath outputLocation, IProgressMonitor monitor)` Sets the both the classpath of this project and its default output location at once.
`void` | `setRawClasspath(IClasspathEntry[] entries, IProgressMonitor monitor)` Sets the classpath of this project using a list of classpath entries.

Methods inherited from interface org.eclipse.jdt.core.IParent
`getChildren, hasChildren`

Methods inherited from interface org.eclipse.jdt.core.IJavaElement
`exists, getAncestor, getCorrespondingResource, getElementName, getElementType, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPath, getPrimaryElement, getResource, getSchedulingRule, getUnderlyingResource, isReadOnly, isStructureKnown`

Methods inherited from interface org.eclipse.core.runtime.IAdaptable
`getAdapter`

Methods inherited from interface org.eclipse.jdt.core.IOpenable
`close, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save`

Method Detail

### findElement

    public IJavaElement findElement(IPath path)
                             throws JavaModelException

  Returns the `IJavaElement` corresponding to the given classpath-relative path, or `null` if no such `IJavaElement` is found. The result is one of an `ICompilationUnit`, `IClassFile`, or `IPackageFragment`.

  When looking for a package fragment, there might be several potential matches; only one of them is returned.

  For example, the path "java/lang/Object.java", would result in the `ICompilationUnit` or `IClassFile` corresponding to "java.lang.Object". The path "java/lang" would result in the `IPackageFragment` for "java.lang".

  Parameters:
    `path` - the given classpath-relative path
  Returns:
    the `IJavaElement` corresponding to the given classpath-relative path, or `null` if no such `IJavaElement` is found
  Throws:
    `JavaModelException` - if the given path is `null` or absolute

### findElement

    public IJavaElement findElement(IPath path,
                                    WorkingCopyOwner owner)
                             throws JavaModelException

  Returns the `IJavaElement` corresponding to the given classpath-relative path, or `null` if no such `IJavaElement` is found. The result is one of an `ICompilationUnit`, `IClassFile`, or `IPackageFragment`. If it is an `ICompilationUnit`, its owner is the given owner.

  When looking for a package fragment, there might be several potential matches; only one of them is returned.

  For example, the path "java/lang/Object.java", would result in the `ICompilationUnit` or `IClassFile` corresponding to "java.lang.Object". The path "java/lang" would result in the `IPackageFragment` for "java.lang".

  Parameters:
    `path` - the given classpath-relative path
    `owner` - the owner of the returned compilation unit, ignored if it is not a compilation unit.
  Returns:
    the `IJavaElement` corresponding to the given classpath-relative path, or `null` if no such `IJavaElement` is found
  Throws:
    `JavaModelException` - if the given path is `null` or absolute
  Since:
    3.0

### findPackageFragment

    public IPackageFragment findPackageFragment(IPath path)
                                         throws JavaModelException

  Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, or `null` if none exist. The path can be: - internal to the workbench: "/Project/src" - external to the workbench: "c:/jdk/classes.zip/java/lang"

  Parameters:
    `path` - the given absolute path
  Returns:
    the first existing package fragment on this project's classpath whose path matches the given (absolute) path, or `null` if none exist
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### findPackageFragmentRoot

    public IPackageFragmentRoot findPackageFragmentRoot(IPath path)
                                                 throws JavaModelException

  Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, or `null` if one does not exist. The path can be: - internal to the workbench: "/Compiler/src" - external to the workbench: "c:/jdk/classes.zip"

  Parameters:
    `path` - the given absolute path
  Returns:
    the existing package fragment root on this project's classpath whose path matches the given (absolute) path, or `null` if one does not exist
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### findPackageFragmentRoots

    public IPackageFragmentRoot[] findPackageFragmentRoots(IClasspathEntry entry)

  Returns the existing package fragment roots identified by the given entry. Note that a classpath entry that refers to another project may have more than one root (if that project has more than on root containing source), and classpath entries within the current project identify a single root.

  If the classpath entry denotes a variable, it will be resolved and return the roots of the target entry (empty if not resolvable).

  If the classpath entry denotes a container, it will be resolved and return the roots corresponding to the set of container entries (empty if not resolvable).

  Parameters:
    `entry` - the given entry
  Returns:
    the existing package fragment roots identified by the given entry
  Since:
    2.1
  See Also:
    `IClasspathContainer`

### findType

    public IType findType(String fullyQualifiedName)
                   throws JavaModelException

  Returns the first type found following this project's classpath with the given fully qualified name or `null` if none is found. The fully qualified name is a dot-separated name. For example, a class B defined as a member type of a class A in package x.y should have a the fully qualified name "x.y.A.B". Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. Secondary types can however be explicitely accessed through their enclosing unit or found by the `SearchEngine`.

  Parameters:
    `fullyQualifiedName` - the given fully qualified name
  Returns:
    the first type found following this project's classpath with the given fully qualified name or `null` if none is found
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
  Since:
    2.0
  See Also:
    `IType.getFullyQualifiedName(char)`

### findType

    public IType findType(String fullyQualifiedName,
                          WorkingCopyOwner owner)
                   throws JavaModelException

  Returns the first type found following this project's classpath with the given fully qualified name or `null` if none is found. The fully qualified name is a dot-separated name. For example, a class B defined as a member type of a class A in package x.y should have a the fully qualified name "x.y.A.B". If the returned type is part of a compilation unit, its owner is the given owner. Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. Secondary types can however be explicitely accessed through their enclosing unit or found by the `SearchEngine`.

  Parameters:
    `fullyQualifiedName` - the given fully qualified name
    `owner` - the owner of the returned type's compilation unit
  Returns:
    the first type found following this project's classpath with the given fully qualified name or `null` if none is found
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
  Since:
    3.0
  See Also:
    `IType.getFullyQualifiedName(char)`

### findType

    public IType findType(String packageName,
                          String typeQualifiedName)
                   throws JavaModelException

  Returns the first type found following this project's classpath with the given package name and type qualified name or `null` if none is found. The package name is a dot-separated name. The type qualified name is also a dot-separated name. For example, a class B defined as a member type of a class A should have the type qualified name "A.B". Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. Secondary types can however be explicitely accessed through their enclosing unit or found by the `SearchEngine`.

  Parameters:
    `packageName` - the given package name
    `typeQualifiedName` - the given type qualified name
  Returns:
    the first type found following this project's classpath with the given package name and type qualified name or `null` if none is found
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
  Since:
    2.0
  See Also:
    `IType.getTypeQualifiedName(char)`

### findType

    public IType findType(String packageName,
                          String typeQualifiedName,
                          WorkingCopyOwner owner)
                   throws JavaModelException

  Returns the first type found following this project's classpath with the given package name and type qualified name or `null` if none is found. The package name is a dot-separated name. The type qualified name is also a dot-separated name. For example, a class B defined as a member type of a class A should have the type qualified name "A.B". If the returned type is part of a compilation unit, its owner is the given owner. Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. Secondary types can however be explicitely accessed through their enclosing unit or found by the `SearchEngine`.

  Parameters:
    `packageName` - the given package name
    `typeQualifiedName` - the given type qualified name
    `owner` - the owner of the returned type's compilation unit
  Returns:
    the first type found following this project's classpath with the given package name and type qualified name or `null` if none is found
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
  Since:
    3.0
  See Also:
    `IType.getTypeQualifiedName(char)`

### getAllPackageFragmentRoots

    public IPackageFragmentRoot[] getAllPackageFragmentRoots()
                                                      throws JavaModelException

  Returns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.

  Returns:
    all of the existing package fragment roots that exist on the classpath
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### getNonJavaResources

    public Object[] getNonJavaResources()
                                 throws JavaModelException

  Returns an array of non-Java resources directly contained in this project. It does not transitively answer non-Java resources contained in folders; these would have to be explicitly iterated over.

  Non-Java resources includes other files and folders located in the project not accounted for by any of it source or binary package fragment roots. If the project is a source folder itself, resources excluded from the corresponding source classpath entry by one or more exclusion patterns are considered non-Java resources and will appear in the result (possibly in a folder)

  Returns:
    an array of non-Java resources (`IFile`s and/or `IFolder`s) directly contained in this project
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### getOption

    public String getOption(String optionName,
                            boolean inheritJavaCoreOptions)

  Helper method for returning one option value only. Equivalent to `(String)this.getOptions(inheritJavaCoreOptions).get(optionName)` Note that it may answer `null` if this option does not exist, or if there is no custom value for it.

  For a complete description of the configurable options, see `JavaCore#getDefaultOptions`.

  Parameters:
    `optionName` - the name of an option
    `inheritJavaCoreOptions` - - boolean indicating whether JavaCore options should be inherited as well
  Returns:
    the String value of a given option
  Since:
    2.1
  See Also:
    `JavaCore.getDefaultOptions()`

### getOptions

    public Map getOptions(boolean inheritJavaCoreOptions)

  Returns the table of the current custom options for this project. Projects remember their custom options, in other words, only the options different from the the JavaCore global options for the workspace. A boolean argument allows to directly merge the project options with global ones from `JavaCore`.

  For a complete description of the configurable options, see `JavaCore#getDefaultOptions`.

  Parameters:
    `inheritJavaCoreOptions` - - boolean indicating whether JavaCore options should be inherited as well
  Returns:
    table of current settings of all options (key type: `String`; value type: `String`)
  Since:
    2.1
  See Also:
    `JavaCore.getDefaultOptions()`

### getOutputLocation

    public IPath getOutputLocation()
                            throws JavaModelException

  Returns the default output location for this project as a workspace- relative absolute path.

  The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entry can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange generated class files for different source folders in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

  Returns:
    the workspace-relative absolute path of the default output folder
  Throws:
    `JavaModelException` - if this element does not exist
  See Also:
    `setOutputLocation(org.eclipse.core.runtime.IPath, IProgressMonitor)`, `IClasspathEntry.getOutputLocation()`

### getPackageFragmentRoot

    public IPackageFragmentRoot getPackageFragmentRoot(String jarPath)

  Returns a package fragment root for the JAR at the specified file system path. This is a handle-only method. The underlying `java.io.File` may or may not exist. No resource is associated with this local JAR package fragment root.

  Parameters:
    `jarPath` - the jars's file system path
  Returns:
    a package fragment root for the JAR at the specified file system path

### getPackageFragmentRoot

    public IPackageFragmentRoot getPackageFragmentRoot(IResource resource)

  Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a `.jar` or `.zip` file. This is a handle-only method. The underlying resource may or may not exist.

  Parameters:
    `resource` - the given resource
  Returns:
    a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a `.jar` or `.zip` file

### getPackageFragmentRoots

    public IPackageFragmentRoot[] getPackageFragmentRoots()
                                                   throws JavaModelException

  Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath. The result does not include package fragment roots in other projects referenced on this project's classpath.

  NOTE: This is equivalent to `getChildren()`.

  Returns:
    all of the package fragment roots contained in this project, identified on this project's resolved classpath
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### getPackageFragmentRoots

    public IPackageFragmentRoot[] getPackageFragmentRoots(IClasspathEntry entry)

  Deprecated. Use IJavaProject#findPackageFragmentRoots instead

  Returns the existing package fragment roots identified by the given entry. Note that a classpath entry that refers to another project may have more than one root (if that project has more than on root containing source), and classpath entries within the current project identify a single root.

  If the classpath entry denotes a variable, it will be resolved and return the roots of the target entry (empty if not resolvable).

  If the classpath entry denotes a container, it will be resolved and return the roots corresponding to the set of container entries (empty if not resolvable).

  Parameters:
    `entry` - the given entry
  Returns:
    the existing package fragment roots identified by the given entry
  See Also:
    `IClasspathContainer`

### getPackageFragments

    public IPackageFragment[] getPackageFragments()
                                           throws JavaModelException

  Returns all package fragments in all package fragment roots contained in this project. This is a convenience method. Note that the package fragment roots corresponds to the resolved classpath of the project.

  Returns:
    all package fragments in all package fragment roots contained in this project
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### getProject

    public IProject getProject()

  Returns the `IProject` on which this `IJavaProject` was created. This is handle-only method.

  Returns:
    the `IProject` on which this `IJavaProject` was created

### getRawClasspath

    public IClasspathEntry[] getRawClasspath()
                                      throws JavaModelException

  Returns the raw classpath for the project, as a list of classpath entries. This corresponds to the exact set of entries which were assigned using `setRawClasspath`, in particular such a classpath may contain classpath variable and classpath container entries. Classpath variable and classpath container entries can be resolved using the helper method `getResolvedClasspath`; classpath variable entries also can be resolved individually using `JavaCore#getClasspathVariable`).

  Both classpath containers and classpath variables provides a level of indirection that can make the `.classpath` file stable across workspaces. As an example, classpath variables allow a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs. Similarly, classpath containers allows classpath entries to be computed dynamically by the plug-in that defines that kind of classpath container.

  Note that in case the project isn't yet opened, the classpath will be read directly from the associated `.classpath` file.

  Returns:
    the raw classpath for the project, as a list of classpath entries
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
  See Also:
    `IClasspathEntry`

### getRequiredProjectNames

    public String[] getRequiredProjectNames()
                                     throws JavaModelException

  Returns the names of the projects that are directly required by this project. A project is required if it is in its classpath.

  The project names are returned in the order they appear on the classpath.

  Returns:
    the names of the projects that are directly required by this project in classpath order
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource

### getResolvedClasspath

    public IClasspathEntry[] getResolvedClasspath(boolean ignoreUnresolvedEntry)
                                           throws JavaModelException

  This is a helper method returning the resolved classpath for the project as a list of simple (non-variable, non-container) classpath entries. All classpath variable and classpath container entries in the project's raw classpath will be replaced by the simple classpath entries they resolve to.

  The resulting resolved classpath is accurate for the given point in time. If the project's raw classpath is later modified, or if classpath variables are changed, the resolved classpath can become out of date. Because of this, hanging on resolved classpath is not recommended.

  Parameters:
    `ignoreUnresolvedEntry` - indicates how to handle unresolvable variables and containers; `true` indicates that missing variables and unresolvable classpath containers should be silently ignored, and that the resulting list should consist only of the entries that could be successfully resolved; `false` indicates that a `JavaModelException` should be thrown for the first unresolved variable or container
  Returns:
    the resolved classpath for the project as a list of simple classpath entries, where all classpath variable and container entries have been resolved and substituted with their final target entries
  Throws:
    `JavaModelException` - in one of the corresponding situation:
    - this element does not exist
    - an exception occurs while accessing its corresponding resource
    - a classpath variable or classpath container was not resolvable and `ignoreUnresolvedEntry` is `false`.
  See Also:
    `IClasspathEntry`

### hasBuildState

    public boolean hasBuildState()

  Returns whether this project has been built at least once and thus whether it has a build state.

  Returns:
    true if this project has been built at least once, false otherwise

### hasClasspathCycle

    public boolean hasClasspathCycle(IClasspathEntry[] entries)

  Returns whether setting this project's classpath to the given classpath entries would result in a cycle. If the set of entries contains some variables, those are resolved in order to determine cycles.

  Parameters:
    `entries` - the given classpath entries
  Returns:
    true if the given classpath entries would result in a cycle, false otherwise

### isOnClasspath

    public boolean isOnClasspath(IJavaElement element)

  Returns whether the given element is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.

  Parameters:
    `element` - the given element
  Returns:
    `true` if the given element is on the classpath of this project, `false` otherwise
  Since:
    2.0
  See Also:
    `IClasspathEntry.getInclusionPatterns()`, `IClasspathEntry.getExclusionPatterns()`

### isOnClasspath

    public boolean isOnClasspath(IResource resource)

  Returns whether the given resource is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.

  Parameters:
    `resource` - the given resource
  Returns:
    `true` if the given resource is on the classpath of this project, `false` otherwise
  Since:
    2.1
  See Also:
    `IClasspathEntry.getInclusionPatterns()`, `IClasspathEntry.getExclusionPatterns()`

### newEvaluationContext

    public IEvaluationContext newEvaluationContext()

  Creates a new evaluation context.

  Returns:
    a new evaluation context.

### newTypeHierarchy

    public ITypeHierarchy newTypeHierarchy(IRegion region,
                                           IProgressMonitor monitor)
                                    throws JavaModelException

  Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.

  Parameters:
    `monitor` - the given progress monitor
    `region` - the given region
  Returns:
    a type hierarchy for all types in the given region, considering subtypes within that region
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
    `IllegalArgumentException` - if region is `null`

### newTypeHierarchy

    public ITypeHierarchy newTypeHierarchy(IRegion region,
                                           WorkingCopyOwner owner,
                                           IProgressMonitor monitor)
                                    throws JavaModelException

  Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

  Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

  Parameters:
    `monitor` - the given progress monitor
    `region` - the given region
    `owner` - the owner of working copies that take precedence over their original compilation units
  Returns:
    a type hierarchy for all types in the given region, considering subtypes within that region
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
    `IllegalArgumentException` - if region is `null`
  Since:
    3.0

### newTypeHierarchy

    public ITypeHierarchy newTypeHierarchy(IType type,
                                           IRegion region,
                                           IProgressMonitor monitor)
                                    throws JavaModelException

  Creates and returns a type hierarchy for the given type considering subtypes in the specified region.

  Parameters:
    `type` - the given type
    `region` - the given region
    `monitor` - the given monitor
  Returns:
    a type hierarchy for the given type considering subtypes in the specified region
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
    `IllegalArgumentException` - if type or region is `null`

### newTypeHierarchy

    public ITypeHierarchy newTypeHierarchy(IType type,
                                           IRegion region,
                                           WorkingCopyOwner owner,
                                           IProgressMonitor monitor)
                                    throws JavaModelException

  Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

  Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

  Parameters:
    `type` - the given type
    `region` - the given region
    `monitor` - the given monitor
    `owner` - the owner of working copies that take precedence over their original compilation units
  Returns:
    a type hierarchy for the given type considering subtypes in the specified region
  Throws:
    `JavaModelException` - if this element does not exist or if an exception occurs while accessing its corresponding resource
    `IllegalArgumentException` - if type or region is `null`
  Since:
    3.0

### readOutputLocation

    public IPath readOutputLocation()

  Returns the default output location for the project as defined by its `.classpath` file from disk, or `null` if unable to read the file.

  This output location may differ from the in-memory one returned by `getOutputLocation`, in case the automatic reconciliation mechanism has not been performed yet. Usually, any change to the `.classpath` file is automatically noticed and reconciled at the next resource change notification event. However, if the file is modified within an operation, where this change needs to be taken into account before the operation ends, then the output location from disk can be read using this method, and further assigned to the project using `setRawClasspath(...)`.

  The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entry can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange generated class files for different source folders in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

  In order to manually force a project classpath refresh, one can simply assign the project classpath using the result of this method, as follows: `proj.setRawClasspath(proj.readRawClasspath(), proj.readOutputLocation(), monitor)` (note that the `readRawClasspath/readOutputLocation` methods could return `null`).

  Returns:
    the workspace-relative absolute path of the default output folder
  Since:
    3.0
  See Also:
    `getOutputLocation()`

### readRawClasspath

    public IClasspathEntry[] readRawClasspath()

  Returns the raw classpath for the project as defined by its `.classpath` file from disk, or `null` if unable to read the file.

  This classpath may differ from the in-memory classpath returned by `getRawClasspath`, in case the automatic reconciliation mechanism has not been performed yet. Usually, any change to the `.classpath` file is automatically noticed and reconciled at the next resource change notification event. However, if the file is modified within an operation, where this change needs to be taken into account before the operation ends, then the classpath from disk can be read using this method, and further assigned to the project using `setRawClasspath(...)`.

  Classpath variable and classpath container entries can be resolved using the helper method `getResolvedClasspath`; classpath variable entries also can be resolved individually using `JavaCore#getClasspathVariable`).

  Note that no check is performed whether the project has the Java nature set, allowing an existing `.classpath` file to be considered independantly (unlike `getRawClasspath` which requires the Java nature to be associated with the project).

  In order to manually force a project classpath refresh, one can simply assign the project classpath using the result of this method, as follows: `proj.setRawClasspath(proj.readRawClasspath(), proj.readOutputLocation(), monitor)` (note that the `readRawClasspath/readOutputLocation` methods could return `null`).

  Returns:
    the raw classpath from disk for the project, as a list of classpath entries
  Since:
    3.0
  See Also:
    `getRawClasspath()`, `IClasspathEntry`

### setOption

    public void setOption(String optionName,
                          String optionValue)

  Helper method for setting one option value only. Equivalent to `Map options = this.getOptions(false); map.put(optionName, optionValue); this.setOptions(map)`

  For a complete description of the configurable options, see `JavaCore#getDefaultOptions`.

  Parameters:
    `optionName` - the name of an option
    `optionValue` - the value of the option to set
  Since:
    3.0
  See Also:
    `JavaCore.getDefaultOptions()`

### setOptions

    public void setOptions(Map newOptions)

  Sets the project custom options. All and only the options explicitly included in the given table are remembered; all previous option settings are forgotten, including ones not explicitly mentioned.

  For a complete description of the configurable options, see `JavaCore#getDefaultOptions`.

  Parameters:
    `newOptions` - the new options (key type: `String`; value type: `String`), or `null` to flush all custom options (clients will automatically get the global JavaCore options).
  Since:
    2.1
  See Also:
    `JavaCore.getDefaultOptions()`

### setOutputLocation

    public void setOutputLocation(IPath path,
                                  IProgressMonitor monitor)
                           throws JavaModelException

  Sets the default output location of this project to the location described by the given workspace-relative absolute path.

  The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entries can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange that generated class files for different source folders to end up in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

  Parameters:
    `path` - the workspace-relative absolute path of the default output folder
    `monitor` - the progress monitor
  Throws:
    `JavaModelException` - if the classpath could not be set. Reasons include:
    - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
    - The path refers to a location not contained in this project (`PATH_OUTSIDE_PROJECT`)
    - The path is not an absolute path (`RELATIVE_PATH`)
    - The path is nested inside a package fragment root of this project (`INVALID_PATH`)
    - The output location is being modified during resource change event notification (CORE_EXCEPTION)
  See Also:
    `getOutputLocation()`, `IClasspathEntry.getOutputLocation()`

### setRawClasspath

    public void setRawClasspath(IClasspathEntry[] entries,
                                IProgressMonitor monitor)
                         throws JavaModelException

  Sets the classpath of this project using a list of classpath entries. In particular such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (see `JavaCore#getClasspathVariable`), or the full classpath can be resolved at once using the helper method `getResolvedClasspath`.

  A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs.

  Setting the classpath to `null` specifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.

  If a cycle is detected while setting this classpath, an error marker will be added to the project closing the cycle. To avoid this problem, use `hasClasspathCycle(IClasspathEntry[] entries)` before setting the classpath.

  This operation acquires a lock on the workspace's root.

  Parameters:
    `entries` - a list of classpath entries
    `monitor` - the given progress monitor
  Throws:
    `JavaModelException` - if the classpath could not be set. Reasons include:
    - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
    - The classpath is being modified during resource change event notification (CORE_EXCEPTION)
    - The classpath failed the validation check as defined by `JavaConventions#validateClasspath`
  See Also:
    `IClasspathEntry`

### setRawClasspath

    public void setRawClasspath(IClasspathEntry[] entries,
                                IPath outputLocation,
                                IProgressMonitor monitor)
                         throws JavaModelException

  Sets the both the classpath of this project and its default output location at once. The classpath is defined using a list of classpath entries. In particular, such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (see `JavaCore#getClasspathVariable`), or the full classpath can be resolved at once using the helper method `getResolvedClasspath`.

  A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs.

  Setting the classpath to `null` specifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.

  If a cycle is detected while setting this classpath, an error marker will be added to the project closing the cycle. To avoid this problem, use `hasClasspathCycle(IClasspathEntry[] entries)` before setting the classpath.

  This operation acquires a lock on the workspace's root.

  Parameters:
    `entries` - a list of classpath entries
    `monitor` - the progress monitor
    `outputLocation` - the default output location
  Throws:
    `JavaModelException` - if the classpath could not be set. Reasons include:
    - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
    - Two or more entries specify source roots with the same or overlapping paths (NAME_COLLISION)
    - A entry of kind `CPE_PROJECT` refers to this project (INVALID_PATH)
    - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
    - The output location path refers to a location not contained in this project (`PATH_OUTSIDE_PROJECT`)
    - The output location path is not an absolute path (`RELATIVE_PATH`)
    - The output location path is nested inside a package fragment root of this project (`INVALID_PATH`)
    - The classpath is being modified during resource change event notification (CORE_EXCEPTION)
  Since:
    2.0
  See Also:
    `IClasspathEntry`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse JDT Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (c) IBM Corp. and others 2000, 2004. All Rights Reserved.