public class JavaProject extends Openable implements IJavaProject, SuffixConstants
A Java Project internally maintains a devpath that corresponds to the project's classpath. The classpath may include source folders from the current project; jars in the current project, other projects, and the local file system; and binary folders (output location) of other projects. The Java Model presents source elements corresponding to output .class files in other projects, and thus uses the devpath rather than the classpath (which is really a compilation path). The devpath mimics the classpath, except has source folder entries in place of output locations in external projects.
Each JavaProject has a NameLookup facility that locates elements on by name, based on the devpath.
IJavaProject| Modifier and Type | Class and Description |
|---|---|
static class |
JavaProject.ClasspathResolutionBreakpointListener |
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
CLASSPATH_FILENAME
Name of file containing project classpath
|
static java.lang.String |
DEFAULT_PREFERENCES_DIRNAME
Name of directory containing preferences file
|
static IClasspathEntry[] |
INVALID_CLASSPATH
Value of the project's raw classpath if the .classpath file contains invalid entries.
|
protected static boolean |
IS_CASE_SENSITIVE
Whether the underlying file system is case sensitive.
|
static java.lang.String |
JAVA_CORE_PREFS_FILE
Extension for file containing custom project preferences
|
protected static java.lang.String[] |
NO_PREREQUISITES
An empty array of strings indicating that a project doesn't have any prerequesite projects.
|
protected IProject |
project
The platform project this
IJavaProject is based on |
JEM_ANNOTATION, JEM_CLASSFILE, JEM_COMPILATIONUNIT, JEM_COUNT, JEM_DELIMITER_ESCAPE, JEM_ESCAPE, JEM_FIELD, JEM_IMPORTDECLARATION, JEM_INITIALIZER, JEM_JAVAPROJECT, JEM_LAMBDA_EXPRESSION, JEM_LAMBDA_METHOD, JEM_LOCALVARIABLE, JEM_METHOD, JEM_MODULAR_CLASSFILE, JEM_MODULE, JEM_PACKAGEDECLARATION, JEM_PACKAGEFRAGMENT, JEM_PACKAGEFRAGMENTROOT, JEM_STRING, JEM_TYPE, JEM_TYPE_PARAMETER, NO_ELEMENTS, NO_INFO, NO_STRINGS, parentCLASSPATH_FILE_NAMEANNOTATION, CLASS_FILE, COMPILATION_UNIT, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVA_MODEL, JAVA_MODULE, JAVA_PROJECT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE, TYPE_PARAMETEREXTENSION_aj, EXTENSION_AJ, EXTENSION_class, EXTENSION_CLASS, EXTENSION_java, EXTENSION_JAVA, EXTENSION_jmod, EXTENSION_JMOD, SUFFIX_aj, SUFFIX_AJ, SUFFIX_class, SUFFIX_CLASS, SUFFIX_java, SUFFIX_JAVA, SUFFIX_STRING_aj, SUFFIX_STRING_AJ, SUFFIX_STRING_class, SUFFIX_STRING_CLASS, SUFFIX_STRING_java, SUFFIX_STRING_JAVA| Constructor and Description |
|---|
JavaProject()
Constructor needed for
IProject.getNature() and IProject.addNature(). |
JavaProject(IProject project,
JavaElement parent) |
| Modifier and Type | Method and Description |
|---|---|
static void |
addCPResolutionBPListener(JavaProject.ClasspathResolutionBreakpointListener listener) |
protected void |
addToBuildSpec(java.lang.String builderID)
Adds a builder to the build spec for the given project.
|
static boolean |
areClasspathsEqual(IClasspathEntry[] firstClasspath,
IClasspathEntry[] secondClasspath,
IPath firstOutputLocation,
IPath secondOutputLocation) |
protected boolean |
buildStructure(OpenableElementInfo info,
IProgressMonitor pm,
java.util.Map newElements,
IResource underlyingResource)
Builds this element's structure and properties in the given
info object, based on this element's current contents (reuse buffer
contents if this element has an open buffer, or resource contents
if this element does not have an open buffer).
|
static IPath |
canonicalizedPath(IPath externalPath)
Returns a canonicalized path from the given external path.
|
void |
close()
Closes this element and its buffer (if any).
|
IPackageFragmentRoot[] |
computePackageFragmentRoots(IClasspathEntry resolvedEntry)
Computes the package fragment roots identified by the given entry.
|
IPackageFragmentRoot[] |
computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath,
boolean retrieveExportedRoots,
boolean filterModuleRoots,
java.util.Map rootToResolvedEntries) |
IPackageFragmentRoot[] |
computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath,
boolean retrieveExportedRoots,
boolean filterModuleRoots,
java.util.Map rootToResolvedEntries,
boolean excludeTestCode)
Returns (local/all) the package fragment roots identified by the given project's classpath.
|
void |
computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath,
ObjectVector accumulatedRoots,
java.util.HashSet rootIDs,
IClasspathEntry referringEntry,
boolean retrieveExportedRoots,
boolean filterModuleRoots,
java.util.Map rootToResolvedEntries)
Deprecated.
|
void |
computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath,
ObjectVector accumulatedRoots,
java.util.HashSet rootIDs,
IClasspathEntry referringEntry,
boolean retrieveExportedRoots,
boolean filterModuleRoots,
java.util.Map rootToResolvedEntries,
boolean excludeTestCode)
Returns (local/all) the package fragment roots identified by the given project's classpath.
|
void |
computePackageFragmentRoots(IClasspathEntry resolvedEntry,
ObjectVector accumulatedRoots,
java.util.HashSet rootIDs,
IClasspathEntry referringEntry,
boolean retrieveExportedRoots,
boolean filterModuleRoots,
java.util.Map rootToResolvedEntries) |
void |
computePackageFragmentRoots(IClasspathEntry resolvedEntry,
ObjectVector accumulatedRoots,
java.util.HashSet rootIDs,
IClasspathEntry referringEntry,
boolean retrieveExportedRoots,
boolean filterModuleRoots,
java.util.Map rootToResolvedEntries,
boolean excludeTestCode)
Returns the package fragment roots identified by the given entry.
|
void |
computePackageFragmentRoots(IClasspathEntry resolvedEntry,
ObjectVector accumulatedRoots,
java.util.HashSet rootIDs,
IClasspathEntry referringEntry,
boolean retrieveExportedRoots,
java.util.Map rootToResolvedEntries)
Returns the package fragment roots identified by the given entry.
|
java.lang.String |
computeSharedPropertyFileName(QualifiedName qName)
Compute the file name to use for a given shared property
|
void |
configure()
Configure the project with Java nature.
|
boolean |
contains(IResource resource) |
void |
createClasspathProblemMarker(IJavaModelStatus status)
Record a new marker denoting a classpath problem
|
protected java.lang.Object |
createElementInfo()
Returns a new element info for this element.
|
IClasspathEntry[][] |
decodeClasspath(java.lang.String xmlClasspath,
java.util.Map unknownElements)
Reads and decode an XML classpath string.
|
IClasspathEntry |
decodeClasspathEntry(java.lang.String encodedEntry)
Decodes the classpath entry that has been encoded in the given string
in the context of this project.
|
void |
deconfigure()
/**
Removes the Java nature from the project.
|
protected IClasspathEntry[] |
defaultClasspath()
Returns a default class path.
|
protected IPath |
defaultOutputLocation()
Returns a default output location.
|
static java.util.List<java.lang.String> |
defaultRootModules(java.lang.Iterable<IPackageFragmentRoot> allSystemRoots)
Implements selection of root modules per JEP 261.
|
java.util.Set<java.lang.String> |
determineModulesOfProjectsWithNonEmptyClasspath()
When compiling test code in a modular project that has non-source classpath entries which don't have the
IClasspathAttribute.MODULE set, the module is assumed to read the unnamed module (which is useful for
test-only dependencies that should not be mentioned in the module-info.java). |
protected java.lang.String |
encodeClasspath(IClasspathEntry[] classpath,
IClasspathEntry[] referencedEntries,
IPath outputLocation,
boolean indent,
java.util.Map unknownElements)
Returns the XML String encoding of the class path.
|
java.lang.String |
encodeClasspathEntry(IClasspathEntry classpathEntry)
Encodes the given classpath entry into a string in the context of this project.
|
boolean |
equals(java.lang.Object o)
Returns true if this handle represents the same Java project
as the given handle.
|
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. |
IModuleDescription |
findModule(java.lang.String moduleName,
WorkingCopyOwner owner)
Finds the first module with the given name found following this project's module path.
|
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. |
IJavaElement |
findPackageFragment(java.lang.String packageName)
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 |
findPackageFragmentRoot0(IPath path) |
IPackageFragmentRoot[] |
findPackageFragmentRoots(IClasspathEntry entry)
Returns the existing package fragment roots identified by the given entry.
|
IType |
findType(java.lang.String fullyQualifiedName)
Returns the first type (excluding secondary types) found following this project's
classpath with the given fully qualified name or
null if none is found. |
IType |
findType(java.lang.String fullyQualifiedName,
IProgressMonitor progressMonitor)
Same functionality as
IJavaProject.findType(String) but also looks for secondary
types if the given name does not match a compilation unit name. |
IType |
findType(java.lang.String packageName,
java.lang.String typeQualifiedName,
IProgressMonitor progressMonitor)
Same functionality as
#findType(String, String) but also looks for
secondary types if the given name does not match a compilation unit name. |
IType |
findType(java.lang.String packageName,
java.lang.String typeQualifiedName,
WorkingCopyOwner owner,
IProgressMonitor progressMonitor)
Same functionality as
#findType(String, String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match a compilation unit name. |
IType |
findType(java.lang.String fullyQualifiedName,
WorkingCopyOwner owner,
IProgressMonitor progressMonitor)
Same functionality as
#findType(String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match
a compilation unit name. |
IPackageFragmentRoot[] |
findUnfilteredPackageFragmentRoots(IClasspathEntry entry)
In a Java 9 project, a classpath entry can be filtered using a
IClasspathAttribute.LIMIT_MODULES attribute,
otherwise for an unnamed module a default set of roots is used as defined in JEP 261. |
protected void |
flushClasspathProblemMarkers(boolean flushCycleMarkers,
boolean flushClasspathFormatMarkers,
boolean flushOverlappingOutputMarkers)
Remove all markers denoting classpath problems
|
IPath[] |
getAccessRestrictions(java.lang.String optionName)
Returns the set of patterns corresponding to this project visibility given rules
|
IPackageFragmentRoot[] |
getAllPackageFragmentRoots()
Returns all of the existing package fragment roots that exist
on the classpath, in the order they are defined by the classpath.
|
IPackageFragmentRoot[] |
getAllPackageFragmentRoots(java.util.Map rootToResolvedEntries)
Deprecated.
|
IPackageFragmentRoot[] |
getAllPackageFragmentRoots(java.util.Map rootToResolvedEntries,
boolean excludeTestCode) |
IModuleDescription |
getAutomaticModuleDescription() |
IClasspathEntry |
getClasspathEntryFor(IPath path)
Returns the classpath entry that refers to the given path or
null if there is no reference to the
path. |
IMarker |
getCycleMarker() |
IEclipsePreferences |
getEclipsePreferences()
Returns the project custom preference pool.
|
java.lang.String |
getElementName()
Returns the name of this element.
|
int |
getElementType()
Returns this element's kind encoded as an integer.
|
IClasspathEntry[] |
getExpandedClasspath()
This is a helper method returning the expanded classpath for the project, as a list of classpath entries,
where all classpath variable entries have been resolved and substituted with their final target entries.
|
IClasspathEntry[] |
getExpandedClasspath(boolean excludeTestCode) |
IPackageFragmentRoot |
getFolderPackageFragmentRoot(IPath path)
The path is known to match a source/library folder entry.
|
IJavaElement |
getHandleFromMemento(java.lang.String token,
MementoTokenizer memento,
WorkingCopyOwner owner) |
protected char |
getHandleMementoDelimiter()
Returns the
char that marks the start of this handles
contribution to a memento. |
protected org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo |
getJavaProjectElementInfo()
Convenience method that returns the specific type of info for a Java project.
|
java.util.jar.Manifest |
getManifest() |
IModuleDescription |
getModuleDescription()
Returns the
IModuleDescription this project represents or
null if the Java project doesn't represent any named module. |
java.lang.Object[] |
getNonJavaResources()
Returns an array of non-java resources contained in the receiver.
|
java.lang.String |
getOption(java.lang.String optionName,
boolean inheritJavaCoreOptions)
Helper method for returning one option value only.
|
java.util.Map<java.lang.String,java.lang.String> |
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.
|
IModuleDescription |
getOwnModuleDescription()
Returns the
IModuleDescription owned by this project or
null if the Java project doesn't own a valid Java module descriptor. |
IPackageFragmentRoot |
getPackageFragmentRoot(IPath path,
IClasspathAttribute[] extraAttributes) |
IPackageFragmentRoot |
getPackageFragmentRoot(IResource resource)
Returns a package fragment root for an external library
(a ZIP archive - e.g.
|
IPackageFragmentRoot |
getPackageFragmentRoot(IResource resource,
IPath entryPath,
IClasspathAttribute[] extraAttributes) |
IPackageFragmentRoot |
getPackageFragmentRoot0(IPath externalLibraryPath,
IClasspathAttribute[] extraAttributes) |
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.
|
IPackageFragment[] |
getPackageFragments()
Returns all package fragments in all package fragment roots contained
in this project.
|
IPackageFragment[] |
getPackageFragmentsInRoots(IPackageFragmentRoot[] roots)
Returns all the package fragments found in the specified
package fragment roots.
|
java.util.List<java.lang.String> |
getPatchedModules(IClasspathEntry cpEntry) |
IPath |
getPath()
Returns the path to the innermost resource enclosing this element.
|
JavaModelManager.PerProjectInfo |
getPerProjectInfo() |
IProject |
getProject()
Returns the
IProject on which this IJavaProject
was created. |
org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache |
getProjectCache()
Deprecated.
|
org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache |
getProjectCache(boolean excludeTestCode) |
IClasspathEntry[] |
getRawClasspath()
Returns the raw classpath for the project, as a list of classpath
entries.
|
IClasspathEntry[] |
getReferencedClasspathEntries()
Returns the list of referenced classpath entries stored in the .classpath file of
this
java project. |
java.lang.String[] |
getRequiredProjectNames()
Returns the names of the projects that are directly required by this
project.
|
IClasspathEntry[] |
getResolvedClasspath() |
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.
|
java.lang.String |
getSharedProperty(java.lang.String key)
Retrieve a shared property on a project.
|
SourceMapper |
getSourceMapper()
Returns the SourceMapper facility for this element, or
null if this element does not have a
SourceMapper. |
IResource |
getUnderlyingResource()
Returns the smallest underlying resource that contains
this element, or
null if this element is not contained
in a resource. |
boolean |
hasBuildState()
Returns whether this project has been built at least once and thus whether it has a build state.
|
boolean |
hasClasspathCycle(IClasspathEntry[] preferredClasspath)
Returns whether setting this project's classpath to the given classpath entries
would result in a cycle.
|
boolean |
hasCycleMarker() |
int |
hashCode()
Returns the hash code for this Java element.
|
static boolean |
hasJavaNature(IProject project)
Returns true if the given project is accessible and it has
a java nature, otherwise false.
|
boolean |
hasSource()
Answers true if the project potentially contains any source.
|
static <T> java.util.List<java.lang.String> |
internalDefaultRootModules(java.lang.Iterable<T> allSystemModules,
java.util.function.Function<T,java.lang.String> getModuleName,
java.util.function.Function<T,IModule> getModule) |
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 element 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.
|
NameLookup |
newNameLookup(ICompilationUnit[] workingCopies) |
NameLookup |
newNameLookup(ICompilationUnit[] workingCopies,
boolean excludeTestCode) |
NameLookup |
newNameLookup(WorkingCopyOwner owner) |
NameLookup |
newNameLookup(WorkingCopyOwner owner,
boolean excludeTestCode) |
SearchableEnvironment |
newSearchableNameEnvironment(ICompilationUnit[] workingCopies) |
SearchableEnvironment |
newSearchableNameEnvironment(ICompilationUnit[] workingCopies,
boolean excludeTestCode) |
SearchableEnvironment |
newSearchableNameEnvironment(WorkingCopyOwner owner) |
SearchableEnvironment |
newSearchableNameEnvironment(WorkingCopyOwner owner,
boolean excludeTestCode) |
JavaModelManager.PerProjectInfo |
newTemporaryInfo() |
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.
|
java.lang.String[] |
projectPrerequisites(IClasspathEntry[] resolvedClasspath) |
IClasspathEntry[][] |
readFileEntriesWithException(java.util.Map unknownElements)
Reads the classpath file entries of this project's .classpath file.
|
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. |
static void |
removeCPResolutionBPListener(JavaProject.ClasspathResolutionBreakpointListener listener) |
protected void |
removeFromBuildSpec(java.lang.String builderID)
Removes the given builder from the build spec for the given project.
|
void |
resetCaches() |
ClasspathChange |
resetResolvedClasspath() |
IClasspathEntry[] |
resolveClasspath(IClasspathEntry[] rawClasspath) |
org.aspectj.org.eclipse.jdt.internal.core.JavaProject.ResolvedClasspath |
resolveClasspath(IClasspathEntry[] rawClasspath,
boolean usePreviousSession,
boolean resolveChainedLibraries) |
org.aspectj.org.eclipse.jdt.internal.core.JavaProject.ResolvedClasspath |
resolveClasspath(IClasspathEntry[] rawClasspath,
IClasspathEntry[] referencedEntries,
boolean usePreviousSession,
boolean resolveChainedLibraries) |
void |
resolveClasspath(JavaModelManager.PerProjectInfo perProjectInfo,
boolean usePreviousSession,
boolean addClasspathChange) |
IResource |
resource(PackageFragmentRoot root) |
java.lang.String |
rootID()
Answers an ID which is used to distinguish project/entries during package
fragment root computations
|
void |
setModuleDescription(IModuleDescription module) |
void |
setOption(java.lang.String optionName,
java.lang.String optionValue)
Helper method for setting one option value only.
|
void |
setOptions(java.util.Map<java.lang.String,java.lang.String> 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 |
setProject(IProject project)
Sets the underlying kernel project of this Java project,
and fills in its parent and name.
|
void |
setRawClasspath(IClasspathEntry[] entries,
boolean canModifyResources,
IProgressMonitor monitor)
Sets the classpath of this project using a list of classpath entries.
|
protected void |
setRawClasspath(IClasspathEntry[] newRawClasspath,
IClasspathEntry[] referencedEntries,
IPath newOutputLocation,
boolean canModifyResources,
IProgressMonitor monitor) |
void |
setRawClasspath(IClasspathEntry[] entries,
IClasspathEntry[] referencedEntries,
IPath outputLocation,
IProgressMonitor monitor)
Sets both the classpath of this project and its default output
location at once.
|
void |
setRawClasspath(IClasspathEntry[] newRawClasspath,
IPath newOutputLocation,
boolean canModifyResources,
IProgressMonitor monitor)
Sets both the classpath of this project and its default output
location at once.
|
void |
setRawClasspath(IClasspathEntry[] entries,
IPath outputLocation,
IProgressMonitor monitor)
Sets the classpath of this project using a list of classpath entries.
|
void |
setRawClasspath(IClasspathEntry[] entries,
IProgressMonitor monitor)
Sets the classpath of this project using a list of classpath entries.
|
void |
setSharedProperty(java.lang.String key,
java.lang.String value)
Record a shared persistent property onto a project.
|
void |
updateCycleParticipants(java.util.List<IPath> prereqChain,
java.util.LinkedHashSet cycleParticipants,
java.util.Map<IPath,java.util.List<org.aspectj.org.eclipse.jdt.internal.core.JavaProject.CycleInfo>> cyclesPerProject,
IWorkspaceRoot workspaceRoot,
java.util.HashSet traversed,
java.util.Map preferredClasspaths)
If a cycle is detected, then cycleParticipants contains all the paths of projects involved in this cycle (directly and indirectly),
no cycle if the set is empty (and started empty)
|
static void |
validateCycles(java.util.Map preferredClasspaths) |
protected IStatus |
validateExistence(IResource underlyingResource) |
boolean |
writeFileEntries(IClasspathEntry[] newClasspath,
IClasspathEntry[] referencedEntries,
IPath newOutputLocation)
Writes the classpath in a sharable format (VCM-wise) only when necessary, that is, if it is semantically different
from the existing one in file.
|
boolean |
writeFileEntries(IClasspathEntry[] newClasspath,
IPath newOutputLocation) |
bufferChanged, canBeRemovedFromCache, canBufferBeRemovedFromCache, closeBuffer, closing, codeComplete, codeSelect, exists, findRecommendedLineSeparator, generateInfos, getBuffer, getBufferFactory, getBufferManager, getCorrespondingResource, getOpenable, getPackageFragmentRoot, getResource, hasBuffer, hasUnsavedChanges, ignoreErrorStatus, isConsistent, isOpen, isSourceElement, isStructureKnown, makeConsistent, open, openAncestors, openBuffer, resource, resourceExists, saveappendEscapedDelimiter, escapeMementoName, findNode, getAncestor, getAttachedJavadoc, getChildren, getChildrenOfType, getClassFile, getCompilationUnit, getElementInfo, getElementInfo, getHandleFromMemento, getHandleIdentifier, getHandleMemento, getHandleMemento, getJavadocBaseLocation, getJavaModel, getJavaProject, getLibraryJavadocLocation, getOpenableParent, getParent, getPrimaryElement, getPrimaryElement, getSchedulingRule, getSourceElementAt, getURLContents, hasChildren, isAncestorOf, isReadOnly, newDoesNotExistStatus, newJavaModelException, newNotPresentException, openWhenClosed, readableName, resolved, tabString, toDebugString, toString, toString, toStringAncestors, toStringChildren, toStringInfo, toStringInfo, toStringName, toStringWithAncestors, toStringWithAncestors, unresolved, validateAndCacheclone, finalize, getClass, notify, notifyAll, wait, wait, waitgetChildren, hasChildrenexists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPrimaryElement, getResource, getSchedulingRule, isReadOnly, isStructureKnownfindRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, savepublic static final java.lang.String CLASSPATH_FILENAME
public static final IClasspathEntry[] INVALID_CLASSPATH
protected static final boolean IS_CASE_SENSITIVE
protected static final java.lang.String[] NO_PREREQUISITES
public static final java.lang.String DEFAULT_PREFERENCES_DIRNAME
public static final java.lang.String JAVA_CORE_PREFS_FILE
protected IProject project
IJavaProject is based onpublic JavaProject()
IProject.getNature() and IProject.addNature().setProject(IProject)public JavaProject(IProject project,
JavaElement parent)
public static void addCPResolutionBPListener(JavaProject.ClasspathResolutionBreakpointListener listener)
public static void removeCPResolutionBPListener(JavaProject.ClasspathResolutionBreakpointListener listener)
public static boolean areClasspathsEqual(IClasspathEntry[] firstClasspath, IClasspathEntry[] secondClasspath, IPath firstOutputLocation, IPath secondOutputLocation)
public static IPath canonicalizedPath(IPath externalPath)
externalPath - IPathfor the definition of a canonicalized pathpublic static boolean hasJavaNature(IProject project)
project - IProjectpublic static void validateCycles(java.util.Map preferredClasspaths)
throws JavaModelException
JavaModelExceptionprotected void addToBuildSpec(java.lang.String builderID)
throws CoreException
CoreExceptionprotected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, java.util.Map newElements, IResource underlyingResource) throws JavaModelException
OpenablebuildStructure in class OpenableJavaModelExceptionOpenablepublic void close()
throws JavaModelException
IOpenableNote: Although IOpenable.close() is exposed in the API, clients are
not expected to open and close elements - the Java model does this automatically
as elements are accessed.
close in interface IOpenableclose in class JavaElementJavaModelException - if an error occurs closing this elementIOpenablepublic IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry resolvedEntry)
resolvedEntry - IClasspathEntrypublic void computePackageFragmentRoots(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, java.util.HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, java.util.Map rootToResolvedEntries) throws JavaModelException
JavaModelExceptionpublic void computePackageFragmentRoots(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, java.util.HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, java.util.Map rootToResolvedEntries) throws JavaModelException
Note: this method is retained for the sole purpose of supporting old versions of Xtext [2.8.x,2.12], which illegally call this internal method.
resolvedEntry - IClasspathEntryaccumulatedRoots - ObjectVectorrootIDs - HashSetreferringEntry - the CP entry (project) referring to this entry, or null if initial projectretrieveExportedRoots - booleanJavaModelExceptionpublic void computePackageFragmentRoots(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, java.util.HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, java.util.Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException
resolvedEntry - IClasspathEntryaccumulatedRoots - ObjectVectorrootIDs - HashSetreferringEntry - the CP entry (project) referring to this entry, or null if initial projectretrieveExportedRoots - booleanfilterModuleRoots - if true, roots corresponding to modules will be filtered if applicable:
if a limit-modules attribute exists, this is used, otherwise system modules will be filtered
according to the rules of root modules per JEP 261.JavaModelExceptionpublic static java.util.List<java.lang.String> defaultRootModules(java.lang.Iterable<IPackageFragmentRoot> allSystemRoots)
public static <T> java.util.List<java.lang.String> internalDefaultRootModules(java.lang.Iterable<T> allSystemModules,
java.util.function.Function<T,java.lang.String> getModuleName,
java.util.function.Function<T,IModule> getModule)
public IPackageFragmentRoot[] findUnfilteredPackageFragmentRoots(IClasspathEntry entry)
IJavaProjectIClasspathAttribute.LIMIT_MODULES attribute,
otherwise for an unnamed module a default set of roots is used as defined in JEP 261.
In both cases IJavaProject.findPackageFragmentRoots(IClasspathEntry) will not contain all roots physically
present in the container.
This API can be used to bypass any filter and get really all roots to which the given entry is resolved.
findUnfilteredPackageFragmentRoots in interface IJavaProjectentry - a classpath entry of this Java projectIJavaProject.findPackageFragmentRoots(IClasspathEntry)public IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, boolean retrieveExportedRoots, boolean filterModuleRoots, java.util.Map rootToResolvedEntries) throws JavaModelException
JavaModelExceptionpublic IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, boolean retrieveExportedRoots, boolean filterModuleRoots, java.util.Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException
resolvedClasspath - IClasspathEntry[]retrieveExportedRoots - booleanfilterModuleRoots - if true, roots corresponding to modules will be filtered if applicable:
if a limit-modules attribute exists, this is used, otherwise system modules will be filtered
according to the rules of root modules per JEP 261.JavaModelException@Deprecated public void computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, ObjectVector accumulatedRoots, java.util.HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, java.util.Map rootToResolvedEntries) throws JavaModelException
JavaModelExceptionpublic void computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, ObjectVector accumulatedRoots, java.util.HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, java.util.Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException
resolvedClasspath - IClasspathEntry[]accumulatedRoots - ObjectVectorrootIDs - HashSetreferringEntry - project entry referring to this CP or null if initial projectretrieveExportedRoots - booleanfilterModuleRoots - if true, roots corresponding to modules will be filtered if applicable:
if a limit-modules attribute exists, this is used, otherwise system modules will be filtered
according to the rules of root modules per JEP 261.JavaModelExceptionpublic java.lang.String computeSharedPropertyFileName(QualifiedName qName)
qName - QualifiedNamepublic void configure()
throws CoreException
CoreExceptionpublic boolean contains(IResource resource)
public void createClasspathProblemMarker(IJavaModelStatus status)
protected java.lang.Object createElementInfo()
createElementInfo in class Openablepublic IClasspathEntry[][] decodeClasspath(java.lang.String xmlClasspath, java.util.Map unknownElements) throws java.io.IOException, ClasspathEntry.AssertionFailedException
IJavaProject.getReferencedClasspathEntries() for more details.java.io.IOExceptionClasspathEntry.AssertionFailedExceptionpublic IClasspathEntry decodeClasspathEntry(java.lang.String encodedEntry)
IJavaProjectdecodeClasspathEntry in interface IJavaProjectencodedEntry - the encoded classpath entrynull if unable to decode itpublic void deconfigure()
throws CoreException
CoreExceptionprotected IClasspathEntry[] defaultClasspath()
protected IPath defaultOutputLocation()
protected java.lang.String encodeClasspath(IClasspathEntry[] classpath, IClasspathEntry[] referencedEntries, IPath outputLocation, boolean indent, java.util.Map unknownElements) throws JavaModelException
JavaModelExceptionpublic java.lang.String encodeClasspathEntry(IClasspathEntry classpathEntry)
IJavaProjectencodeClasspathEntry in interface IJavaProjectclasspathEntry - the classpath entry to encodepublic boolean equals(java.lang.Object o)
equals in class JavaElementJavaElement.equals(Object)public IJavaElement findElement(IPath path) throws JavaModelException
IJavaProjectIJavaElement 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".
findElement in interface IJavaProjectpath - the given classpath-relative pathIJavaElement corresponding to the given
classpath-relative path, or null if no such
IJavaElement is foundJavaModelException - if the given path is null
or absoluteIJavaProject.findElement(IPath)public IJavaElement findElement(IPath path, WorkingCopyOwner owner) throws JavaModelException
IJavaProjectIJavaElement 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".
findElement in interface IJavaProjectpath - the given classpath-relative pathowner - the owner of the returned compilation unit, ignored if it is
not a compilation unit.IJavaElement corresponding to the given
classpath-relative path, or null if no such
IJavaElement is foundJavaModelException - if the given path is null
or absoluteIJavaProject.findElement(IPath, WorkingCopyOwner)public IJavaElement findPackageFragment(java.lang.String packageName) throws JavaModelException
IJavaProjectnull if none
exist.
The path can be:
- internal to the workbench: "/Project/src"
- external to the workbench: "c:/jdk/classes.zip/java/lang"findPackageFragment in interface IJavaProjectpackageName - the given absolute pathnull if none
existJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourcepublic IPackageFragment findPackageFragment(IPath path) throws JavaModelException
IJavaProjectnull if none
exist.
The path can be:
- internal to the workbench: "/Project/src"
- external to the workbench: "c:/jdk/classes.zip/java/lang"findPackageFragment in interface IJavaProjectpath - the given absolute pathnull if none
existJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic IPackageFragmentRoot findPackageFragmentRoot(IPath path) throws JavaModelException
IJavaProjectnull if
one does not exist.
The path can be:
- internal to the workbench: "/Compiler/src"
- external to the workbench: "c:/jdk/classes.zip"findPackageFragmentRoot in interface IJavaProjectpath - the given absolute pathnull if
one does not existJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic IPackageFragmentRoot findPackageFragmentRoot0(IPath path) throws JavaModelException
JavaModelExceptionpublic IPackageFragmentRoot[] findPackageFragmentRoots(IClasspathEntry entry)
IJavaProjectIf 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).
The result does not include package fragment roots in other projects referenced on this project's classpath.
findPackageFragmentRoots in interface IJavaProjectentry - the given entryIJavaProjectpublic IType findType(java.lang.String fullyQualifiedName) throws JavaModelException
IJavaProjectnull 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 top level enclosing
type name) must match its corresponding compilation unit name. As a
consequence, secondary types cannot be found using this functionality.
To find secondary types use IJavaProject.findType(String, IProgressMonitor) instead.findType in interface IJavaProjectfullyQualifiedName - the given fully qualified namenull if none is foundJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProject.findType(String)public IType findType(java.lang.String fullyQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException
IJavaProjectIJavaProject.findType(String) but also looks for secondary
types if the given name does not match a compilation unit name.findType in interface IJavaProjectfullyQualifiedName - the given fully qualified nameprogressMonitor - the progress monitor to report progress to,
or null if no progress monitor is providednull if none is foundJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProject.findType(String, IProgressMonitor)public IType findType(java.lang.String packageName, java.lang.String typeQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException
IJavaProject#findType(String, String) but also looks for
secondary types if the given name does not match a compilation unit name.findType in interface IJavaProjectpackageName - the given package nametypeQualifiedName - the given type qualified nameprogressMonitor - the progress monitor to report progress to,
or null if no progress monitor is providednull if none is foundJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProject.findType(String, String, IProgressMonitor)public IType findType(java.lang.String packageName, java.lang.String typeQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException
IJavaProject#findType(String, String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match a compilation unit name.findType in interface IJavaProjectpackageName - the given package nametypeQualifiedName - the given type qualified nameowner - the owner of the returned type's compilation unitprogressMonitor - the progress monitor to report progress to,
or null if no progress monitor is providednull if none is foundJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProject.findType(String, String, WorkingCopyOwner, IProgressMonitor)public IType findType(java.lang.String fullyQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException
IJavaProject#findType(String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match
a compilation unit name.findType in interface IJavaProjectfullyQualifiedName - the given fully qualified nameowner - the owner of the returned type's compilation unitprogressMonitor - the progress monitor to report progress to,
or null if no progress monitor is providednull if none is foundJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProject.findType(String, WorkingCopyOwner, IProgressMonitor)public IModuleDescription findModule(java.lang.String moduleName, WorkingCopyOwner owner) throws JavaModelException
IJavaProjectfindModule in interface IJavaProjectmoduleName - the given module nameowner - the owner of the returned module descriptor's compilation unitnull if none is foundJavaModelException - if this project does not exist or if an
exception occurs while accessing its corresponding resourceprotected void flushClasspathProblemMarkers(boolean flushCycleMarkers,
boolean flushClasspathFormatMarkers,
boolean flushOverlappingOutputMarkers)
public IPath[] getAccessRestrictions(java.lang.String optionName)
public IPackageFragmentRoot[] getAllPackageFragmentRoots() throws JavaModelException
IJavaProjectgetAllPackageFragmentRoots in interface IJavaProjectJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProject@Deprecated public IPackageFragmentRoot[] getAllPackageFragmentRoots(java.util.Map rootToResolvedEntries) throws JavaModelException
JavaModelExceptionpublic IPackageFragmentRoot[] getAllPackageFragmentRoots(java.util.Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException
JavaModelExceptionpublic IClasspathEntry getClasspathEntryFor(IPath path) throws JavaModelException
IJavaProjectnull if there is no reference to the
path.getClasspathEntryFor in interface IJavaProjectpath - IPathnull.JavaModelExceptionpublic IMarker getCycleMarker()
public IEclipsePreferences getEclipsePreferences()
null if the project
does not have a java nature.public java.lang.String getElementName()
IJavaElementgetElementName in interface IJavaElementgetElementName in class JavaElementIAdaptablepublic int getElementType()
IJavaElementgetElementType in interface IJavaElementIJavaElementIJavaElementpublic IClasspathEntry[] getExpandedClasspath() throws JavaModelException
JavaModelExceptionpublic IClasspathEntry[] getExpandedClasspath(boolean excludeTestCode) throws JavaModelException
JavaModelExceptionpublic IPackageFragmentRoot getFolderPackageFragmentRoot(IPath path)
path - IPathpublic IJavaElement getHandleFromMemento(java.lang.String token, MementoTokenizer memento, WorkingCopyOwner owner)
getHandleFromMemento in class JavaElementprotected char getHandleMementoDelimiter()
char that marks the start of this handles
contribution to a memento.getHandleMementoDelimiter in class JavaElementprotected org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo getJavaProjectElementInfo()
throws JavaModelException
JavaModelExceptionpublic java.lang.Object[] getNonJavaResources()
throws JavaModelException
getNonJavaResources in interface IJavaProjectIFiles and/or
IFolders) directly contained in this projectJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourcepublic java.lang.String getOption(java.lang.String optionName,
boolean inheritJavaCoreOptions)
IJavaProject(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.
getOption in interface IJavaProjectoptionName - the name of an optioninheritJavaCoreOptions - - boolean indicating whether JavaCore options should be inherited as wellIJavaProject.getOption(String, boolean)public java.util.Map<java.lang.String,java.lang.String> getOptions(boolean inheritJavaCoreOptions)
IJavaProjectJavaCore.
For a complete description of the configurable options, see JavaCore#getDefaultOptions.
getOptions in interface IJavaProjectinheritJavaCoreOptions - - boolean indicating whether JavaCore options should be inherited as wellString; value type: String)IJavaProject.getOptions(boolean)public IPath getOutputLocation()
throws JavaModelException
IJavaProjectThe 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).
getOutputLocation in interface IJavaProjectJavaModelException - if this element does not existIJavaProjectpublic IPackageFragmentRoot getPackageFragmentRoot(IPath path, IClasspathAttribute[] extraAttributes)
path - IPathnull if unable to generate a handle from the path (for example,
an absolute path that has less than 1 segment. The path may be relative or
absolute.public IPackageFragmentRoot getPackageFragmentRoot(IResource resource)
IJavaProject.jar, a .zip file, etc. -
or - since 3.4 - a class folder) 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 library
package fragment root.getPackageFragmentRoot in interface IJavaProjectresource - the library's file system pathIJavaProjectpublic IPackageFragmentRoot getPackageFragmentRoot(IResource resource, IPath entryPath, IClasspathAttribute[] extraAttributes)
public IPackageFragmentRoot getPackageFragmentRoot0(IPath externalLibraryPath, IClasspathAttribute[] extraAttributes)
public IPackageFragmentRoot[] getPackageFragmentRoots() throws JavaModelException
IJavaProjectNOTE: This is equivalent to getChildren().
getPackageFragmentRoots in interface IJavaProjectJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic IPackageFragmentRoot[] getPackageFragmentRoots(IClasspathEntry entry)
IJavaProjectIf 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).
The result does not include package fragment roots in other projects referenced on this project's classpath.
getPackageFragmentRoots in interface IJavaProjectentry - the given entryIJavaProjectpublic IPackageFragment[] getPackageFragments() throws JavaModelException
IJavaProjectgetPackageFragments in interface IJavaProjectJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic IPackageFragment[] getPackageFragmentsInRoots(IPackageFragmentRoot[] roots)
roots - IPackageFragmentRoot[]public IPath getPath()
IJavaElementgetPath in interface IJavaElementIJavaElementpublic JavaModelManager.PerProjectInfo getPerProjectInfo() throws JavaModelException
JavaModelExceptionpublic IProject getProject()
IJavaProjectIProject on which this IJavaProject
was created. This is handle-only method.getProject in interface IJavaProjectIProject on which this IJavaProject
was createdIJavaProject.getProject()@Deprecated
public org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache getProjectCache()
throws JavaModelException
JavaModelExceptionpublic org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache getProjectCache(boolean excludeTestCode)
throws JavaModelException
JavaModelExceptionpublic IClasspathEntry[] getRawClasspath() throws JavaModelException
IJavaProjectsetRawClasspath, 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.
getRawClasspath in interface IJavaProjectJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic IClasspathEntry[] getReferencedClasspathEntries() throws JavaModelException
IJavaProjectthis
java project. Clients can store the referenced classpath entries using
IJavaProject.setRawClasspath(IClasspathEntry[], IClasspathEntry[], IPath, IProgressMonitor)
If the client has not stored any referenced entries for this project, an empty array is returned.getReferencedClasspathEntries in interface IJavaProjectJavaModelExceptionIJavaProjectpublic java.lang.String[] getRequiredProjectNames()
throws JavaModelException
IJavaProjectThe project names are returned in the order they appear on the classpath.
getRequiredProjectNames in interface IJavaProjectJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProject.getRequiredProjectNames()public IClasspathEntry[] getResolvedClasspath() throws JavaModelException
JavaModelExceptionpublic IClasspathEntry[] getResolvedClasspath(boolean ignoreUnresolvedEntry) throws JavaModelException
IJavaProjectThe 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.
Note that if the resolution creates duplicate entries
(i.e. entries which are Object.equals(Object)),
only the first one is added to the resolved classpath.
getResolvedClasspath in interface IJavaProjectignoreUnresolvedEntry - 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 containerJavaModelException - in one of the corresponding situation:
ignoreUnresolvedEntry is false.IJavaProjectpublic IResource resource(PackageFragmentRoot root)
resource in class OpenableIJavaElementpublic java.lang.String getSharedProperty(java.lang.String key)
throws CoreException
key - StringCoreExceptionsetSharedProperty(String, String)public SourceMapper getSourceMapper()
JavaElementnull if this element does not have a
SourceMapper.getSourceMapper in class JavaElementJavaElementpublic IResource getUnderlyingResource()
throws JavaModelException
IJavaElementnull if this element is not contained
in a resource.getUnderlyingResource in interface IJavaElementgetUnderlyingResource in class Openablenull if noneJavaModelException - if this element does not exist or if an
exception occurs while accessing its underlying resourceIJavaElementpublic boolean hasBuildState()
IJavaProjecthasBuildState in interface IJavaProjectIJavaProjectpublic boolean hasClasspathCycle(IClasspathEntry[] preferredClasspath)
IJavaProjecthasClasspathCycle in interface IJavaProjectpreferredClasspath - the given classpath entriesIJavaProjectpublic boolean hasCycleMarker()
public int hashCode()
JavaElementhashCode in class JavaElementpublic boolean hasSource()
public boolean isOnClasspath(IJavaElement element)
IJavaProjectisOnClasspath in interface IJavaProjectelement - the given elementtrue if the given element is on the classpath of
this project, false otherwiseIClasspathEntry.getInclusionPatterns(),
IClasspathEntry.getExclusionPatterns()public boolean isOnClasspath(IResource resource)
IJavaProjectisOnClasspath in interface IJavaProjectresource - the given elementtrue if the given element is on the classpath of
this project, false otherwiseIClasspathEntry.getInclusionPatterns(),
IClasspathEntry.getExclusionPatterns()public IEvaluationContext newEvaluationContext()
IJavaProjectnewEvaluationContext in interface IJavaProjectIJavaProject.newEvaluationContext()public NameLookup newNameLookup(ICompilationUnit[] workingCopies) throws JavaModelException
JavaModelExceptionpublic NameLookup newNameLookup(ICompilationUnit[] workingCopies, boolean excludeTestCode) throws JavaModelException
JavaModelExceptionpublic NameLookup newNameLookup(WorkingCopyOwner owner) throws JavaModelException
JavaModelExceptionpublic NameLookup newNameLookup(WorkingCopyOwner owner, boolean excludeTestCode) throws JavaModelException
JavaModelExceptionpublic SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies) throws JavaModelException
JavaModelExceptionpublic SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies, boolean excludeTestCode) throws JavaModelException
JavaModelExceptionpublic SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner) throws JavaModelException
JavaModelExceptionpublic SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner, boolean excludeTestCode) throws JavaModelException
JavaModelExceptionpublic JavaModelManager.PerProjectInfo newTemporaryInfo()
public ITypeHierarchy newTypeHierarchy(IRegion region, IProgressMonitor monitor) throws JavaModelException
IJavaProjectnewTypeHierarchy in interface IJavaProjectregion - the given regionmonitor - the given progress monitorJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic ITypeHierarchy newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException
IJavaProjectNote that if a working copy is empty, it will be as if the original compilation unit had been deleted.
newTypeHierarchy in interface IJavaProjectregion - the given regionowner - the owner of working copies that take precedence over their original compilation unitsmonitor - the given progress monitorJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic ITypeHierarchy newTypeHierarchy(IType type, IRegion region, IProgressMonitor monitor) throws JavaModelException
IJavaProjectnewTypeHierarchy in interface IJavaProjecttype - the given typeregion - the given regionmonitor - the given monitorJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic ITypeHierarchy newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException
IJavaProjectNote that if a working copy is empty, it will be as if the original compilation unit had been deleted.
newTypeHierarchy in interface IJavaProjecttype - the given typeregion - the given regionowner - the owner of working copies that take precedence over their original compilation unitsmonitor - the given monitorJavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourceIJavaProjectpublic java.lang.String[] projectPrerequisites(IClasspathEntry[] resolvedClasspath) throws JavaModelException
JavaModelExceptionpublic IClasspathEntry[][] readFileEntriesWithException(java.util.Map unknownElements) throws CoreException, java.io.IOException, ClasspathEntry.AssertionFailedException
IJavaProject.getReferencedClasspathEntries() for more details.
As a side effect, unknown elements are stored in the given map (if not null)
Throws exceptions if the file cannot be accessed or is malformed.CoreExceptionjava.io.IOExceptionClasspathEntry.AssertionFailedExceptionpublic IPath readOutputLocation()
IJavaProject.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).
readOutputLocation in interface IJavaProjectIJavaProjectpublic IClasspathEntry[] readRawClasspath()
IJavaProject.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).
readRawClasspath in interface IJavaProjectIJavaProjectprotected void removeFromBuildSpec(java.lang.String builderID)
throws CoreException
CoreExceptionpublic void resetCaches()
public ClasspathChange resetResolvedClasspath()
public IClasspathEntry[] resolveClasspath(IClasspathEntry[] rawClasspath) throws JavaModelException
JavaModelExceptionpublic org.aspectj.org.eclipse.jdt.internal.core.JavaProject.ResolvedClasspath resolveClasspath(IClasspathEntry[] rawClasspath, boolean usePreviousSession, boolean resolveChainedLibraries) throws JavaModelException
JavaModelExceptionpublic org.aspectj.org.eclipse.jdt.internal.core.JavaProject.ResolvedClasspath resolveClasspath(IClasspathEntry[] rawClasspath, IClasspathEntry[] referencedEntries, boolean usePreviousSession, boolean resolveChainedLibraries) throws JavaModelException
JavaModelExceptionpublic void resolveClasspath(JavaModelManager.PerProjectInfo perProjectInfo, boolean usePreviousSession, boolean addClasspathChange) throws JavaModelException
JavaModelExceptionpublic java.lang.String rootID()
public boolean writeFileEntries(IClasspathEntry[] newClasspath, IClasspathEntry[] referencedEntries, IPath newOutputLocation) throws JavaModelException
newClasspath - IClasspathEntry[]newOutputLocation - IPathJavaModelExceptionpublic boolean writeFileEntries(IClasspathEntry[] newClasspath, IPath newOutputLocation) throws JavaModelException
JavaModelExceptionpublic void setOption(java.lang.String optionName,
java.lang.String optionValue)
IJavaProjectEquivalent to:
Map options = this.getOptions(false);
map.put(optionName, optionValue);
this.setOptions(map)
For a complete description of the configurable options, see JavaCore#getDefaultOptions.
setOption in interface IJavaProjectoptionName - the name of an optionoptionValue - the value of the option to set. If null, then the option
is removed from project preferences.IJavaProject.setOption(java.lang.String, java.lang.String)public void setOptions(java.util.Map<java.lang.String,java.lang.String> newOptions)
IJavaProject
For a complete description of the configurable options, see JavaCore#getDefaultOptions.
setOptions in interface IJavaProjectnewOptions - the new options (key type: String; value type: String),
or null to flush all custom options (clients will automatically get the global JavaCore options).IJavaProject.setOptions(Map)public void setOutputLocation(IPath path,
IProgressMonitor monitor)
throws JavaModelException
IJavaProjectThe 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).
setOutputLocation in interface IJavaProjectpath - the workspace-relative absolute path of the default output
foldermonitor - the progress monitorJavaModelException - if the classpath could not be set. Reasons include:
PATH_OUTSIDE_PROJECT)
RELATIVE_PATH)
INVALID_PATH)
IJavaProjectpublic void setProject(IProject project)
IProjectNature#setProject(IProject)public void setRawClasspath(IClasspathEntry[] entries, boolean canModifyResources, IProgressMonitor monitor) throws JavaModelException
IJavaProjectJavaCore.getClasspathVariable(String)),
or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).
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.
If it is specified that this operation cannot modify resources, the .classpath file will not be written to disk
and no error marker will be generated. To synchronize the .classpath with the in-memory classpath,
one can use setRawClasspath(readRawClasspath(), true, monitor).
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 (and if resources can be modified), an error marker will be added
to the project closing the cycle.
To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[])
before setting the classpath.
This operation acquires a lock on the workspace's root.
setRawClasspath in interface IJavaProjectentries - a list of classpath entriescanModifyResources - whether resources should be written to disk if neededmonitor - the given progress monitorJavaModelException - if the classpath could not be set. Reasons include:
JavaConventions.validateClasspath(IJavaProject, IClasspathEntry[], IPath)
IJavaProject.setRawClasspath(IClasspathEntry[],boolean,IProgressMonitor)public void setRawClasspath(IClasspathEntry[] newRawClasspath, IPath newOutputLocation, boolean canModifyResources, IProgressMonitor monitor) throws JavaModelException
IJavaProjectJavaCore.getClasspathVariable(String)),
or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).
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.
If it is specified that this operation cannot modify resources, the .classpath file will not be written to disk
and no error marker will be generated. To synchronize the .classpath with the in-memory classpath,
one can use setRawClasspath(readRawClasspath(), true, monitor).
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 (and if resources can be modified), an error marker will be added
to the project closing the cycle.
To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[])
before setting the classpath.
This operation acquires a lock on the workspace's root.
setRawClasspath in interface IJavaProjectnewRawClasspath - a list of classpath entriesnewOutputLocation - the default output locationcanModifyResources - whether resources should be written to disk if neededmonitor - the given progress monitorJavaModelException - if the classpath could not be set. Reasons include:
JavaConventions.validateClasspath(IJavaProject, IClasspathEntry[], IPath)
IJavaProject.setRawClasspath(IClasspathEntry[],IPath,boolean,IProgressMonitor)public void setRawClasspath(IClasspathEntry[] entries, IPath outputLocation, IProgressMonitor monitor) throws JavaModelException
IJavaProjectJavaCore.getClasspathVariable(String)),
or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).
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.
If it is specified that this operation cannot modify resources, the .classpath file will not be written to disk
and no error marker will be generated. To synchronize the .classpath with the in-memory classpath,
one can use setRawClasspath(readRawClasspath(), true, monitor).
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 (and if resources can be modified), an error marker will be added
to the project closing the cycle.
To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[])
before setting the classpath.
This operation acquires a lock on the workspace's root.
setRawClasspath in interface IJavaProjectentries - a list of classpath entriesoutputLocation - whether resources should be written to disk if neededmonitor - the given progress monitorJavaModelException - if the classpath could not be set. Reasons include:
JavaConventions.validateClasspath(IJavaProject, IClasspathEntry[], IPath)
IJavaProject.setRawClasspath(IClasspathEntry[],IPath,IProgressMonitor)public void setRawClasspath(IClasspathEntry[] entries, IClasspathEntry[] referencedEntries, IPath outputLocation, IProgressMonitor monitor) throws JavaModelException
IJavaProjectJavaCore.getClasspathVariable(String)),
or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).
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.
If it is specified that this operation cannot modify resources, the .classpath file will not be written to disk
and no error marker will be generated. To synchronize the .classpath with the in-memory classpath,
one can use setRawClasspath(readRawClasspath(), true, monitor).
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 (and if resources can be modified), an error marker will be added
to the project closing the cycle.
To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[])
before setting the classpath.
This operation acquires a lock on the workspace's root.
setRawClasspath in interface IJavaProjectentries - a list of classpath entriesreferencedEntries - the default output locationoutputLocation - whether resources should be written to disk if neededmonitor - the given progress monitorJavaModelException - if the classpath could not be set. Reasons include:
JavaConventions.validateClasspath(IJavaProject, IClasspathEntry[], IPath)
IClasspathEntryprotected void setRawClasspath(IClasspathEntry[] newRawClasspath, IClasspathEntry[] referencedEntries, IPath newOutputLocation, boolean canModifyResources, IProgressMonitor monitor) throws JavaModelException
JavaModelExceptionpublic void setRawClasspath(IClasspathEntry[] entries, IProgressMonitor monitor) throws JavaModelException
IJavaProjectJavaCore.getClasspathVariable(String)),
or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).
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 IJavaProject.hasClasspathCycle(IClasspathEntry[])
before setting the classpath.
This operation acquires a lock on the workspace's root.
setRawClasspath in interface IJavaProjectentries - a list of classpath entriesmonitor - the given progress monitorJavaModelException - if the classpath could not be set. Reasons include:
JavaConventions.validateClasspath(IJavaProject, IClasspathEntry[], IPath)
IJavaProjectpublic void setSharedProperty(java.lang.String key,
java.lang.String value)
throws CoreException
Shared properties end up in resource files, and thus cannot be modified during delta notifications (a CoreException would then be thrown).
key - Stringvalue - StringCoreExceptiongetSharedProperty(String key)public void updateCycleParticipants(java.util.List<IPath> prereqChain,
java.util.LinkedHashSet cycleParticipants,
java.util.Map<IPath,java.util.List<org.aspectj.org.eclipse.jdt.internal.core.JavaProject.CycleInfo>> cyclesPerProject,
IWorkspaceRoot workspaceRoot,
java.util.HashSet traversed,
java.util.Map preferredClasspaths)
prereqChain - ArrayListcycleParticipants - HashSetworkspaceRoot - IWorkspaceRoottraversed - HashSetpreferredClasspaths - Mapprotected IStatus validateExistence(IResource underlyingResource)
validateExistence in class Openablepublic IModuleDescription getModuleDescription() throws JavaModelException
IJavaProjectIModuleDescription this project represents or
null if the Java project doesn't represent any named module. A Java
project is said to represent a module if any of its source package
fragment roots (see IPackageFragmentRoot.K_SOURCE) contains a
valid Java module descriptor, or if one of its classpath entries
has a valid IClasspathAttribute.PATCH_MODULE attribute
affecting the current project.
In the latter case the corresponding module description of the
location referenced by that classpath entry is returned.getModuleDescription in interface IJavaProjectIModuleDescription this project represents.JavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourcepublic IModuleDescription getOwnModuleDescription() throws JavaModelException
IJavaProjectIModuleDescription owned by this project or
null if the Java project doesn't own a valid Java module descriptor.
This method considers only module descriptions contained in any of the
project's source package fragment roots (see IPackageFragmentRoot.K_SOURCE).
In particular any IClasspathAttribute.PATCH_MODULE attribute
is not considered.getOwnModuleDescription in interface IJavaProjectIModuleDescription this project owns.JavaModelException - if this element does not exist or if an
exception occurs while accessing its corresponding resourcepublic java.util.List<java.lang.String> getPatchedModules(IClasspathEntry cpEntry)
public IModuleDescription getAutomaticModuleDescription() throws JavaModelException
JavaModelExceptionpublic void setModuleDescription(IModuleDescription module) throws JavaModelException
JavaModelExceptionpublic java.util.jar.Manifest getManifest()
public java.util.Set<java.lang.String> determineModulesOfProjectsWithNonEmptyClasspath()
throws JavaModelException
IJavaProjectIClasspathAttribute.MODULE set, the module is assumed to read the unnamed module (which is useful for
test-only dependencies that should not be mentioned in the module-info.java). When executing test code that was
compiled like this, corresponding "--add-reads" options need to be passed to the java runtime. This method
returns the list of modules on the project's classpath for which this is the case.determineModulesOfProjectsWithNonEmptyClasspath in interface IJavaProjectJavaModelException - when access to the classpath or module description of the given project fails.