Class JavaProject
- All Implemented Interfaces:
IBufferChangedListener
,IJavaElement
,IJavaProject
,IOpenable
,IParent
,SuffixConstants
,org.eclipse.core.runtime.IAdaptable
- Direct Known Subclasses:
ExternalJavaProject
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.
- See Also:
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Name of file containing project classpathstatic final String
Name of directory containing preferences filestatic final IClasspathEntry[]
Value of the project's raw classpath if the .classpath file contains invalid entries.static final String
Extension for file containing custom project preferencesprotected static final String[]
An empty array of strings indicating that a project doesn't have any prerequesite projects.protected final org.eclipse.core.resources.IProject
The platform project thisIJavaProject
is based onFields inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaElement
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
Fields inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaElement
ANNOTATION, 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_PARAMETER
Fields inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaProject
CLASSPATH_FILE_NAME
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants
EXTENSION_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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
static boolean
areClasspathsEqual
(IClasspathEntry[] firstClasspath, IClasspathEntry[] secondClasspath, org.eclipse.core.runtime.IPath firstOutputLocation, org.eclipse.core.runtime.IPath secondOutputLocation) protected boolean
buildStructure
(OpenableElementInfo info, org.eclipse.core.runtime.IProgressMonitor pm, Map newElements, org.eclipse.core.resources.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).protected int
static org.eclipse.core.runtime.IPath
canonicalizedPath
(org.eclipse.core.runtime.IPath externalPath) Deprecated.This method may not do what you expect from its name (see bug 571614):void
close()
Closes this element and its buffer (if any).computePackageFragmentRoots
(IClasspathEntry resolvedEntry) Computes the package fragment roots identified by the given entry.computePackageFragmentRoots
(IClasspathEntry[] resolvedClasspath, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries) computePackageFragmentRoots
(IClasspathEntry[] resolvedClasspath, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries, boolean excludeTestCode) Returns (local/all) the package fragment roots identified by the given project's classpath.void
computePackageFragmentRoots
(IClasspathEntry[] resolvedClasspath, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries) Deprecated.void
computePackageFragmentRoots
(IClasspathEntry[] resolvedClasspath, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries, boolean excludeTestCode) Returns (local/all) the package fragment roots identified by the given project's classpath.void
computePackageFragmentRoots
(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries) void
computePackageFragmentRoots
(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries, boolean excludeTestCode) Returns the package fragment roots identified by the given entry.void
computePackageFragmentRoots
(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, Map rootToResolvedEntries) Returns the package fragment roots identified by the given entry.computeSharedPropertyFileName
(org.eclipse.core.runtime.QualifiedName qName) Compute the file name to use for a given shared propertyboolean
contains
(org.eclipse.core.resources.IResource resource) void
Record a new marker denoting a classpath problemprotected org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo
Returns a new element info for this element.static org.eclipse.core.runtime.IPath
createPackageFragementKey
(org.eclipse.core.runtime.IPath externalPath) Does nothing by default.IClasspathEntry[][]
decodeClasspath
(String xmlClasspath, Map unknownElements) Reads and decode an XML classpath string.decodeClasspathEntry
(String encodedEntry) Decodes the classpath entry that has been encoded in the given string in the context of this project.protected IClasspathEntry[]
Returns a default class path.protected org.eclipse.core.runtime.IPath
Returns a default output location.defaultRootModules
(Iterable<IPackageFragmentRoot> allSystemRoots) Implements selection of root modules per JEP 261.When compiling test code in a modular project that has non-source classpath entries which don't have theIClasspathAttribute.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 String
encodeClasspath
(IClasspathEntry[] classpath, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.IPath outputLocation, boolean indent, Map unknownElements) Returns the XML String encoding of the class path.encodeClasspathEntry
(IClasspathEntry classpathEntry) Encodes the given classpath entry into a string in the context of this project.boolean
Returns true if this handle represents the same Java project as the given handle.findContainingClasspathEntry
(org.eclipse.core.resources.IResource resource) Returns the class path entry which contains the given resource and not explicitly excluded using an exclusion pattern, or null otherwise.findElement
(String bindingKey, WorkingCopyOwner owner) Finds the Java element corresponding to the given binding key if any, else returnsnull
.findElement
(org.eclipse.core.runtime.IPath path) Returns theIJavaElement
corresponding to the given classpath-relative path, ornull
if no suchIJavaElement
is found.findElement
(org.eclipse.core.runtime.IPath path, WorkingCopyOwner owner) Returns theIJavaElement
corresponding to the given classpath-relative path, ornull
if no suchIJavaElement
is found.findModule
(String moduleName, WorkingCopyOwner owner) Finds the first module with the given name found following this project's module path.findPackageFragment
(String packageName) findPackageFragment
(org.eclipse.core.runtime.IPath path) Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, ornull
if none exist.findPackageFragmentRoot
(org.eclipse.core.runtime.IPath path) Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, ornull
if one does not exist.findPackageFragmentRoot0
(org.eclipse.core.runtime.IPath path) Returns the existing package fragment roots identified by the given entry.Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornull
if none is found.Returns the first type (excluding secondary types) found following this project's classpath with the given package name and type qualified name ornull
if none is found.findType
(String packageName, String typeQualifiedName, WorkingCopyOwner owner) Returns the first type (excluding secondary types) found following this project's classpath with the given package name and type qualified name ornull
if none is found.findType
(String packageName, String typeQualifiedName, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor progressMonitor) Same functionality asIJavaProject.findType(String, String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match a compilation unit name.findType
(String packageName, String typeQualifiedName, org.eclipse.core.runtime.IProgressMonitor progressMonitor) Same functionality asIJavaProject.findType(String, String)
but also looks for secondary types if the given name does not match a compilation unit name.findType
(String fullyQualifiedName, WorkingCopyOwner owner) Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornull
if none is found.findType
(String fullyQualifiedName, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor progressMonitor) Same functionality asIJavaProject.findType(String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match a compilation unit name.Same functionality asIJavaProject.findType(String)
but also looks for secondary types if the given name does not match a compilation unit name.In a Java 9 project, a classpath entry can be filtered using aIClasspathAttribute.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 problemsorg.eclipse.core.runtime.IPath[]
getAccessRestrictions
(String optionName) Returns the set of patterns corresponding to this project visibility given rulesReturns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.getAllPackageFragmentRoots
(Map rootToResolvedEntries) Deprecated.getAllPackageFragmentRoots
(Map rootToResolvedEntries, boolean excludeTestCode) getClasspathEntryFor
(org.eclipse.core.runtime.IPath path) Returns the classpath entry that refers to the given path ornull
if there is no reference to the path.org.eclipse.core.resources.IMarker
org.eclipse.core.runtime.preferences.IEclipsePreferences
Returns the project custom preference pool.Returns the name of this element.int
Returns this element's kind encoded as an integer.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.getExpandedClasspath
(boolean excludeTestCode) getFolderPackageFragmentRoot
(org.eclipse.core.runtime.IPath path) The path is known to match a source/library folder entry.getHandleFromMemento
(String token, MementoTokenizer memento, WorkingCopyOwner owner) protected char
Returns thechar
that marks the start of this handles contribution to a memento.Returns the Java model.Returns the Java project this element is contained in, ornull
if this element is not contained in any Java project (for instance, theIJavaModel
is not contained in any Java project).protected org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo
Convenience method that returns the specific type of info for a Java project.Returns theIModuleDescription
this project represents or null if the Java project doesn't represent any named module.Object[]
Returns an array of non-java resources contained in the receiver.Helper method for returning one option value only.getOptions
(boolean inheritJavaCoreOptions) Returns the table of the current custom options for this project.org.eclipse.core.runtime.IPath
Returns the default output location for this project as a workspace- relative absolute path.Returns theIModuleDescription
owned by this project or null if the Java project doesn't own a valid Java module descriptor.getPackageFragmentRoot
(String externalLibraryPath) Returns a package fragment root for an external library (a ZIP archive - e.g.getPackageFragmentRoot
(org.eclipse.core.resources.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 ZIP archive (e.g.getPackageFragmentRoot
(org.eclipse.core.resources.IResource resource, org.eclipse.core.runtime.IPath entryPath, IClasspathAttribute[] extraAttributes) getPackageFragmentRoot
(org.eclipse.core.runtime.IPath path, IClasspathAttribute[] extraAttributes) getPackageFragmentRoot0
(org.eclipse.core.runtime.IPath externalLibraryPath, IClasspathAttribute[] extraAttributes) Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath.Deprecated.Returns all package fragments in all package fragment roots contained in this project.Returns all the package fragments found in the specified package fragment roots.getPatchedModules
(IClasspathEntry cpEntry) org.eclipse.core.runtime.IPath
getPath()
Returns the path to the innermost resource enclosing this element.org.eclipse.core.resources.IProject
Returns theIProject
on which thisIJavaProject
was created.org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache
Deprecated.org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache
getProjectCache
(boolean excludeTestCode) Returns the raw classpath for the project, as a list of classpath entries.Returns the list of referenced classpath entries stored in the .classpath file ofthis
java project.String[]
Returns the names of the projects that are directly required by this project.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.getSharedProperty
(String key) Retrieve a shared property on a project.Returns the SourceMapper facility for this element, ornull
if this element does not have a SourceMapper.org.eclipse.core.resources.IResource
Returns the smallest underlying resource that contains this element, ornull
if this element is not contained in a resource.boolean
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
static boolean
hasJavaNature
(org.eclipse.core.resources.IProject project) Returns true if the given project is accessible and it has a java nature, otherwise false.boolean
Answers true if the project potentially contains any source.internalDefaultRootModules
(Iterable<T> allSystemModules, Function<T, String> getModuleName, 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
(org.eclipse.core.resources.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.Creates a new evaluation context.newNameLookup
(ICompilationUnit[] workingCopies) newNameLookup
(ICompilationUnit[] workingCopies, boolean excludeTestCode) newNameLookup
(WorkingCopyOwner owner) newNameLookup
(WorkingCopyOwner owner, boolean excludeTestCode) newSearchableNameEnvironment
(ICompilationUnit[] workingCopies) newSearchableNameEnvironment
(ICompilationUnit[] workingCopies, boolean excludeTestCode) newSearchableNameEnvironment
(WorkingCopyOwner owner, boolean excludeTestCode) newTypeHierarchy
(IRegion region, WorkingCopyOwner owner, org.eclipse.core.runtime.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.newTypeHierarchy
(IRegion region, org.eclipse.core.runtime.IProgressMonitor monitor) Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.newTypeHierarchy
(IType type, IRegion region, WorkingCopyOwner owner, org.eclipse.core.runtime.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.newTypeHierarchy
(IType type, IRegion region, org.eclipse.core.runtime.IProgressMonitor monitor) Creates and returns a type hierarchy for the given type considering subtypes in the specified region.String[]
projectPrerequisites
(IClasspathEntry[] resolvedClasspath) IClasspathEntry[][]
readFileEntriesWithException
(Map unknownElements) Reads the classpath file entries of this project's .classpath file.org.eclipse.core.runtime.IPath
Returns the default output location for the project as defined by its.classpath
file from disk, ornull
if unable to read the file.Returns the raw classpath for the project as defined by its.classpath
file from disk, ornull
if unable to read the file.static void
void
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) org.eclipse.core.resources.IResource
resource
(PackageFragmentRoot root) rootID()
Answers an ID which is used to distinguish project/entries during package fragment root computationsvoid
void
Helper method for setting one option value only.void
setOptions
(Map<String, String> newOptions) Sets the project custom options.void
setOutputLocation
(org.eclipse.core.runtime.IPath path, org.eclipse.core.runtime.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, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor) Sets the classpath of this project using a list of classpath entries.protected void
setRawClasspath
(IClasspathEntry[] newRawClasspath, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.IPath newOutputLocation, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor) void
setRawClasspath
(IClasspathEntry[] entries, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.IPath outputLocation, org.eclipse.core.runtime.IProgressMonitor monitor) Works similar toIJavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor)
and additionally allows persisting the given array of referenced entries for this project.void
setRawClasspath
(IClasspathEntry[] newRawClasspath, org.eclipse.core.runtime.IPath newOutputLocation, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor) Sets both the classpath of this project and its default output location at once.void
setRawClasspath
(IClasspathEntry[] entries, org.eclipse.core.runtime.IPath outputLocation, org.eclipse.core.runtime.IProgressMonitor monitor) Sets the both the classpath of this project and its default output location at once.void
setRawClasspath
(IClasspathEntry[] entries, org.eclipse.core.runtime.IProgressMonitor monitor) Sets the classpath of this project using a list of classpath entries.void
setSharedProperty
(String key, String value) Record a shared persistent property onto a project.void
updateCycleParticipants
(List<org.eclipse.core.runtime.IPath> prereqChain, LinkedHashSet cycleParticipants, Map<org.eclipse.core.runtime.IPath, List<org.aspectj.org.eclipse.jdt.internal.core.JavaProject.CycleInfo>> cyclesPerProject, org.eclipse.core.resources.IWorkspaceRoot workspaceRoot, HashSet traversed, 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
(Map preferredClasspaths) protected org.eclipse.core.runtime.IStatus
validateExistence
(org.eclipse.core.resources.IResource underlyingResource) boolean
writeFileEntries
(IClasspathEntry[] newClasspath, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.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, org.eclipse.core.runtime.IPath newOutputLocation) Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.Openable
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, save
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaElement
appendEscapedDelimiter, escapeMementoName, findNode, getAncestor, getAttachedJavadoc, getChildren, getChildrenOfType, getClassFile, getCompilationUnit, getElementInfo, getElementInfo, getHandleFromMemento, getHandleIdentifier, getHandleMemento, getHandleMemento, getJavadocBaseLocation, getLibraryJavadocLocation, getOpenableParent, getParent, getPrimaryElement, getPrimaryElement, getSchedulingRule, getSourceElementAt, getURLContents, hasChildren, hashCode, isAncestorOf, isReadOnly, newDoesNotExistStatus, newJavaModelException, newNotPresentException, openWhenClosed, readableName, resetHashCode, resolved, tabString, toDebugString, toString, toString, toStringAncestors, toStringChildren, toStringInfo, toStringInfo, toStringName, toStringWithAncestors, toStringWithAncestors, unresolved, validateAndCache
Methods inherited from class org.eclipse.core.runtime.PlatformObject
getAdapter
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getHandleIdentifier, getOpenable, getParent, getPrimaryElement, getResource, getSchedulingRule, isReadOnly, isStructureKnown
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IOpenable
findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IParent
getChildren, hasChildren
-
Field Details
-
CLASSPATH_FILENAME
Name of file containing project classpath- See Also:
-
INVALID_CLASSPATH
Value of the project's raw classpath if the .classpath file contains invalid entries. -
NO_PREREQUISITES
An empty array of strings indicating that a project doesn't have any prerequesite projects. -
DEFAULT_PREFERENCES_DIRNAME
Name of directory containing preferences file- See Also:
-
JAVA_CORE_PREFS_FILE
Extension for file containing custom project preferences- See Also:
-
project
protected final org.eclipse.core.resources.IProject projectThe platform project thisIJavaProject
is based on
-
-
Constructor Details
-
JavaProject
-
-
Method Details
-
addCPResolutionBPListener
public static void addCPResolutionBPListener(JavaProject.ClasspathResolutionBreakpointListener listener) -
removeCPResolutionBPListener
public static void removeCPResolutionBPListener(JavaProject.ClasspathResolutionBreakpointListener listener) -
areClasspathsEqual
public static boolean areClasspathsEqual(IClasspathEntry[] firstClasspath, IClasspathEntry[] secondClasspath, org.eclipse.core.runtime.IPath firstOutputLocation, org.eclipse.core.runtime.IPath secondOutputLocation) -
createPackageFragementKey
public static org.eclipse.core.runtime.IPath createPackageFragementKey(org.eclipse.core.runtime.IPath externalPath) Does nothing by default. With system flag org.eclipse.jdt.resolve_actual_packagefragment_name=true it tries to find the actual filename -
canonicalizedPath
@Deprecated public static org.eclipse.core.runtime.IPath canonicalizedPath(org.eclipse.core.runtime.IPath externalPath) Deprecated.This method may not do what you expect from its name (see bug 571614):On Linux/Mac (CASE_SENSITIVE by default) it does nothing - even when pointing to a case insensitive filesystem.
On Windows (CASE_INSENSITIVE by default) it will find the actual capitalization of all path segments. On Windows it will also resolve 8.3 filenames to its long names. On Windows this results in slow system calls for every segment of the path since JDK 12 (see https://bugs.openjdk.java.net/browse/JDK-8207005) - even when the filesystem is configured to be case sensitive and 8.3 name resolving is disabled.
ALTERNATIVES:
For package fragments use
createPackageFragementKey(org.eclipse.core.runtime.IPath)
For comparing files use
Files.isSameFile(java.nio.file.Path, java.nio.file.Path)
For getting the actual capitalization use
Path.toRealPath(java.nio.file.LinkOption...)
Returns a canonicalized path from the given external path. Note that the return path contains the same number of segments and it contains a device only if the given path contained one.- Parameters:
externalPath
- IPath- Returns:
- IPath
-
hasJavaNature
public static boolean hasJavaNature(org.eclipse.core.resources.IProject project) Returns true if the given project is accessible and it has a java nature, otherwise false.- Parameters:
project
- IProject- Returns:
- boolean
-
validateCycles
- Throws:
JavaModelException
-
buildStructure
protected boolean buildStructure(OpenableElementInfo info, org.eclipse.core.runtime.IProgressMonitor pm, Map newElements, org.eclipse.core.resources.IResource underlyingResource) throws JavaModelException Description copied from class:Openable
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). Children are placed in the given newElements table (note, this element has already been placed in the newElements table). Returns true if successful, or false if an error is encountered while determining the structure of this element.- Specified by:
buildStructure
in classOpenable
- Throws:
JavaModelException
- See Also:
-
close
Description copied from interface:IOpenable
Closes this element and its buffer (if any). Closing an element which is not open has no effect.Note: 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.- Specified by:
close
in interfaceIOpenable
- Overrides:
close
in classJavaElement
- Throws:
JavaModelException
- if an error occurs closing this element- See Also:
-
computePackageFragmentRoots
Computes the package fragment roots identified by the given entry. Only works with resolved entry- Parameters:
resolvedEntry
- IClasspathEntry- Returns:
- IPackageFragmentRoot[]
-
computePackageFragmentRoots
public void computePackageFragmentRoots(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries) throws JavaModelException - Throws:
JavaModelException
-
computePackageFragmentRoots
public void computePackageFragmentRoots(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, Map rootToResolvedEntries) throws JavaModelException Returns the package fragment roots identified by the given entry. In case it refers to a project, it will follow its classpath so as to find exported roots as well. Only works with resolved entryNote: 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.
- Parameters:
resolvedEntry
- IClasspathEntryaccumulatedRoots
- ObjectVectorrootIDs
- HashSetreferringEntry
- the CP entry (project) referring to this entry, or null if initial projectretrieveExportedRoots
- boolean- Throws:
JavaModelException
-
computePackageFragmentRoots
public void computePackageFragmentRoots(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException Returns the package fragment roots identified by the given entry. In case it refers to a project, it will follow its classpath so as to find exported roots as well. Only works with resolved entry- Parameters:
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.- Throws:
JavaModelException
-
defaultRootModules
Implements selection of root modules per JEP 261. -
internalDefaultRootModules
-
findUnfilteredPackageFragmentRoots
Description copied from interface:IJavaProject
In a Java 9 project, a classpath entry can be filtered using aIClasspathAttribute.LIMIT_MODULES
attribute, otherwise for an unnamed module a default set of roots is used as defined in JEP 261. In both casesIJavaProject.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.
- Specified by:
findUnfilteredPackageFragmentRoots
in interfaceIJavaProject
- Parameters:
entry
- a classpath entry of this Java project- Returns:
- the unfiltered array of package fragment roots to which the classpath entry resolves
- See Also:
-
computePackageFragmentRoots
public IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries) throws JavaModelException - Throws:
JavaModelException
-
computePackageFragmentRoots
public IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException Returns (local/all) the package fragment roots identified by the given project's classpath. Note: this follows project classpath references to find required project contributions, eliminating duplicates silently. Only works with resolved entries- Parameters:
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.- Returns:
- IPackageFragmentRoot[]
- Throws:
JavaModelException
-
computePackageFragmentRoots
@Deprecated public void computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries) throws JavaModelException Deprecated.- Throws:
JavaModelException
-
computePackageFragmentRoots
public void computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, ObjectVector accumulatedRoots, HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, boolean filterModuleRoots, Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException Returns (local/all) the package fragment roots identified by the given project's classpath. Note: this follows project classpath references to find required project contributions, eliminating duplicates silently. Only works with resolved entries- Parameters:
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.- Throws:
JavaModelException
-
contains
public boolean contains(org.eclipse.core.resources.IResource resource) -
createClasspathProblemMarker
Record a new marker denoting a classpath problem -
createElementInfo
protected org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo createElementInfo()Returns a new element info for this element.- Overrides:
createElementInfo
in classOpenable
-
decodeClasspath
public IClasspathEntry[][] decodeClasspath(String xmlClasspath, Map unknownElements) throws IOException, ClasspathEntry.AssertionFailedException Reads and decode an XML classpath string. Returns a two-dimensional array, where the number of elements in the row is fixed to 2. The first element is an array of raw classpath entries and the second element is an array of referenced entries that may have been stored by the client earlier. SeeIJavaProject.getReferencedClasspathEntries()
for more details. -
decodeClasspathEntry
Description copied from interface:IJavaProject
Decodes the classpath entry that has been encoded in the given string in the context of this project. Returns null if the encoded entry is malformed.- Specified by:
decodeClasspathEntry
in interfaceIJavaProject
- Parameters:
encodedEntry
- the encoded classpath entry- Returns:
- the decoded classpath entry, or
null
if unable to decode it
-
defaultClasspath
Returns a default class path. This is the root of the project -
defaultOutputLocation
protected org.eclipse.core.runtime.IPath defaultOutputLocation()Returns a default output location. This is the project bin folder -
encodeClasspath
protected String encodeClasspath(IClasspathEntry[] classpath, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.IPath outputLocation, boolean indent, Map unknownElements) throws JavaModelException Returns the XML String encoding of the class path.- Throws:
JavaModelException
-
encodeClasspathEntry
Description copied from interface:IJavaProject
Encodes the given classpath entry into a string in the context of this project.- Specified by:
encodeClasspathEntry
in interfaceIJavaProject
- Parameters:
classpathEntry
- the classpath entry to encode- Returns:
- the encoded classpath entry
-
equals
Returns true if this handle represents the same Java project as the given handle. Two handles represent the same project if they are identical or if they represent a project with the same underlying resource and occurrence counts.- Overrides:
equals
in classJavaElement
- See Also:
-
calculateHashCode
protected int calculateHashCode()- Overrides:
calculateHashCode
in classJavaElement
-
findElement
Description copied from interface:IJavaProject
Returns theIJavaElement
corresponding to the given classpath-relative path, ornull
if no suchIJavaElement
is found. The result is one of anICompilationUnit
,IClassFile
, orIPackageFragment
.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
orIClassFile
corresponding to "java.lang.Object". The path "java/lang" would result in theIPackageFragment
for "java.lang".- Specified by:
findElement
in interfaceIJavaProject
- Parameters:
path
- the given classpath-relative path- Returns:
- the
IJavaElement
corresponding to the given classpath-relative path, ornull
if no suchIJavaElement
is found - Throws:
JavaModelException
- if the given path isnull
or absolute- See Also:
-
findElement
public IJavaElement findElement(org.eclipse.core.runtime.IPath path, WorkingCopyOwner owner) throws JavaModelException Description copied from interface:IJavaProject
Returns theIJavaElement
corresponding to the given classpath-relative path, ornull
if no suchIJavaElement
is found. The result is one of anICompilationUnit
,IClassFile
, orIPackageFragment
. If it is anICompilationUnit
, 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
orIClassFile
corresponding to "java.lang.Object". The path "java/lang" would result in theIPackageFragment
for "java.lang".- Specified by:
findElement
in interfaceIJavaProject
- Parameters:
path
- the given classpath-relative pathowner
- 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, ornull
if no suchIJavaElement
is found - Throws:
JavaModelException
- if the given path isnull
or absolute- See Also:
-
findPackageFragment
- Throws:
JavaModelException
-
findElement
public IJavaElement findElement(String bindingKey, WorkingCopyOwner owner) throws JavaModelException Description copied from interface:IJavaProject
Finds the Java element corresponding to the given binding key if any, else returnsnull
. Elements are looked up using this project's classpath. The first element corresponding to the given key on this project's classpath is returned.Possible elements are:
IPackageFragment
for a binding key from anIPackageBinding
IType
for a binding key from anITypeBinding
IMethod
for a binding key from anIMethodBinding
IField
for a binding key from anIVariableBinding
representing afield
ITypeParameter
for a binding key from anITypeBinding
representing atype variable
IAnnotation
for a binding key from anIAnnotationBinding
Note: if two methods correspond to the binding key because their parameter types' simple names are the same, then the first one is returned. For example, if a class defines two methods
foo(p1.Y, String)
andfoo(p2.Y, String)
, in both cases the parameter type's simple names are{"Y", "String"}
. Thusfoo(p1.Y, String)
is returned.- Specified by:
findElement
in interfaceIJavaProject
- Parameters:
bindingKey
- the given binding keyowner
- the owner of the returned element's compilation unit, ornull
if the default working copy owner must be used- Returns:
- the Java element corresponding to the given key,
or
null
if no such Java element is found - Throws:
JavaModelException
- if this project does not exist or if an exception occurs while accessing its corresponding resource
-
findPackageFragment
public IPackageFragment findPackageFragment(org.eclipse.core.runtime.IPath path) throws JavaModelException Description copied from interface:IJavaProject
Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, ornull
if none exist. The path can be: - internal to the workbench: "/Project/src" - external to the workbench: "c:/jdk/classes.zip/java/lang"- Specified by:
findPackageFragment
in interfaceIJavaProject
- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findPackageFragmentRoot
public IPackageFragmentRoot findPackageFragmentRoot(org.eclipse.core.runtime.IPath path) throws JavaModelException Description copied from interface:IJavaProject
Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, ornull
if one does not exist. The path can be: - internal to the workbench: "/Compiler/src" - external to the workbench: "c:/jdk/classes.zip"- Specified by:
findPackageFragmentRoot
in interfaceIJavaProject
- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findPackageFragmentRoot0
public IPackageFragmentRoot findPackageFragmentRoot0(org.eclipse.core.runtime.IPath path) throws JavaModelException - Throws:
JavaModelException
-
findPackageFragmentRoots
Description copied from interface:IJavaProject
Returns the existing package fragment roots identified by the given entry. A classpath entry within the current project identifies 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).
The result does not include package fragment roots in other projects referenced on this project's classpath.
- Specified by:
findPackageFragmentRoots
in interfaceIJavaProject
- Parameters:
entry
- the given entry- Returns:
- the existing package fragment roots identified by the given entry
- See Also:
-
findType
Description copied from interface:IJavaProject
Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornull
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 useIJavaProject.findType(String, IProgressMonitor)
instead.- Specified by:
findType
in interfaceIJavaProject
- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findType
public IType findType(String fullyQualifiedName, org.eclipse.core.runtime.IProgressMonitor progressMonitor) throws JavaModelException Description copied from interface:IJavaProject
Same functionality asIJavaProject.findType(String)
but also looks for secondary types if the given name does not match a compilation unit name.- Specified by:
findType
in interfaceIJavaProject
- Parameters:
fullyQualifiedName
- the given fully qualified nameprogressMonitor
- the progress monitor to report progress to, ornull
if no progress monitor is provided- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findType
Description copied from interface:IJavaProject
Returns the first type (excluding secondary types) found following this project's classpath with the given package name and type qualified name ornull
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 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 useIJavaProject.findType(String, String, IProgressMonitor)
instead.- Specified by:
findType
in interfaceIJavaProject
- Parameters:
packageName
- the given package nametypeQualifiedName
- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findType
public IType findType(String packageName, String typeQualifiedName, org.eclipse.core.runtime.IProgressMonitor progressMonitor) throws JavaModelException Description copied from interface:IJavaProject
Same functionality asIJavaProject.findType(String, String)
but also looks for secondary types if the given name does not match a compilation unit name.- Specified by:
findType
in interfaceIJavaProject
- Parameters:
packageName
- the given package nametypeQualifiedName
- the given type qualified nameprogressMonitor
- the progress monitor to report progress to, ornull
if no progress monitor is provided- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findType
public IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner) throws JavaModelException Description copied from interface:IJavaProject
Returns the first type (excluding secondary types) found following this project's classpath with the given package name and type qualified name ornull
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 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 useIJavaProject.findType(String, String, WorkingCopyOwner, IProgressMonitor)
instead.- Specified by:
findType
in interfaceIJavaProject
- Parameters:
packageName
- the given package nametypeQualifiedName
- the given type qualified nameowner
- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findType
public IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor progressMonitor) throws JavaModelException Description copied from interface:IJavaProject
Same functionality asIJavaProject.findType(String, String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match a compilation unit name.- Specified by:
findType
in interfaceIJavaProject
- Parameters:
packageName
- 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, ornull
if no progress monitor is provided- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findType
Description copied from interface:IJavaProject
Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornull
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 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 useIJavaProject.findType(String, WorkingCopyOwner, IProgressMonitor)
instead.- Specified by:
findType
in interfaceIJavaProject
- Parameters:
fullyQualifiedName
- the given fully qualified nameowner
- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findType
public IType findType(String fullyQualifiedName, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor progressMonitor) throws JavaModelException Description copied from interface:IJavaProject
Same functionality asIJavaProject.findType(String, WorkingCopyOwner)
but also looks for secondary types if the given name does not match a compilation unit name.- Specified by:
findType
in interfaceIJavaProject
- Parameters:
fullyQualifiedName
- the given fully qualified nameowner
- the owner of the returned type's compilation unitprogressMonitor
- the progress monitor to report progress to, ornull
if no progress monitor is provided- 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 project does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
findModule
public IModuleDescription findModule(String moduleName, WorkingCopyOwner owner) throws JavaModelException Description copied from interface:IJavaProject
Finds the first module with the given name found following this project's module path. If the returned module descriptor is part of a compilation unit, its owner is the given owner.- Specified by:
findModule
in interfaceIJavaProject
- Parameters:
moduleName
- the given module nameowner
- the owner of the returned module descriptor's compilation unit- Returns:
- the first module found following this project's module path
with the given name or
null
if none is found - Throws:
JavaModelException
- if this project does not exist or if an exception occurs while accessing its corresponding resource
-
flushClasspathProblemMarkers
protected void flushClasspathProblemMarkers(boolean flushCycleMarkers, boolean flushClasspathFormatMarkers, boolean flushOverlappingOutputMarkers) Remove all markers denoting classpath problems -
getAccessRestrictions
Returns the set of patterns corresponding to this project visibility given rules- Returns:
- an array of IPath or null if none
-
getAllPackageFragmentRoots
Description copied from interface:IJavaProject
Returns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.- Specified by:
getAllPackageFragmentRoots
in interfaceIJavaProject
- 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- See Also:
-
getAllPackageFragmentRoots
@Deprecated public IPackageFragmentRoot[] getAllPackageFragmentRoots(Map rootToResolvedEntries) throws JavaModelException Deprecated.- Throws:
JavaModelException
-
getAllPackageFragmentRoots
public IPackageFragmentRoot[] getAllPackageFragmentRoots(Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException - Throws:
JavaModelException
-
getClasspathEntryFor
public IClasspathEntry getClasspathEntryFor(org.eclipse.core.runtime.IPath path) throws JavaModelException Description copied from interface:IJavaProject
Returns the classpath entry that refers to the given path ornull
if there is no reference to the path.- Specified by:
getClasspathEntryFor
in interfaceIJavaProject
- Parameters:
path
- IPath- Returns:
- the classpath entry or
null
. - Throws:
JavaModelException
-
getCycleMarker
public org.eclipse.core.resources.IMarker getCycleMarker() -
getEclipsePreferences
public org.eclipse.core.runtime.preferences.IEclipsePreferences getEclipsePreferences()Returns the project custom preference pool. Project preferences may include custom encoding.- Returns:
- IEclipsePreferences or
null
if the project does not have a java nature.
-
getElementName
Description copied from interface:IJavaElement
Returns the name of this element. This is a handle-only method.- Specified by:
getElementName
in interfaceIJavaElement
- Overrides:
getElementName
in classJavaElement
- Returns:
- the element name
- See Also:
-
getElementType
public int getElementType()Description copied from interface:IJavaElement
Returns this element's kind encoded as an integer. This is a handle-only method.- Specified by:
getElementType
in interfaceIJavaElement
- Returns:
- the kind of element; one of the constants declared in
IJavaElement
- See Also:
-
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. All project exports have been appended to project entries.- Returns:
- IClasspathEntry[]
- Throws:
JavaModelException
-
getExpandedClasspath
- Throws:
JavaModelException
-
getFolderPackageFragmentRoot
The path is known to match a source/library folder entry.- Parameters:
path
- IPath- Returns:
- IPackageFragmentRoot
-
getHandleFromMemento
public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) - Specified by:
getHandleFromMemento
in classJavaElement
-
getHandleMementoDelimiter
protected char getHandleMementoDelimiter()Returns thechar
that marks the start of this handles contribution to a memento.- Specified by:
getHandleMementoDelimiter
in classJavaElement
-
getJavaProjectElementInfo
protected org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo getJavaProjectElementInfo() throws JavaModelExceptionConvenience method that returns the specific type of info for a Java project.- Throws:
JavaModelException
-
getNonJavaResources
Returns an array of non-java resources contained in the receiver.- Specified by:
getNonJavaResources
in interfaceIJavaProject
- Returns:
- an array of non-Java resources (
IFile
s and/orIFolder
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
Description copied from interface:IJavaProject
Helper method for returning one option value only. Equivalent to(String)this.getOptions(inheritJavaCoreOptions).get(optionName)
Note that it may answernull
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
.- Specified by:
getOption
in interfaceIJavaProject
- Parameters:
optionName
- the name of an optioninheritJavaCoreOptions
- - boolean indicating whether JavaCore options should be inherited as well- Returns:
- the String value of a given option
- See Also:
-
getOptions
Description copied from interface:IJavaProject
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 fromJavaCore
.For a complete description of the configurable options, see
JavaCore#getDefaultOptions
.- Specified by:
getOptions
in interfaceIJavaProject
- 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
) - See Also:
-
getOutputLocation
Description copied from interface:IJavaProject
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).
- Specified by:
getOutputLocation
in interfaceIJavaProject
- Returns:
- the workspace-relative absolute path of the default output folder
- Throws:
JavaModelException
- if this element does not exist- See Also:
-
getPackageFragmentRoot
public IPackageFragmentRoot getPackageFragmentRoot(org.eclipse.core.runtime.IPath path, IClasspathAttribute[] extraAttributes) - Parameters:
path
- IPath- Returns:
- A handle to the package fragment root identified by the given path.
This method is handle-only and the element may or may not exist. Returns
null
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.
-
getPackageFragmentRoot
Description copied from interface:IJavaProject
Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a ZIP archive (e.g. a.jar
, a.zip
file, etc.) This is a handle-only method. The underlying resource may or may not exist.- Specified by:
getPackageFragmentRoot
in interfaceIJavaProject
- 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 ZIP archive (e.g. a
.jar
, a.zip
file, etc.) - See Also:
-
getPackageFragmentRoot
public IPackageFragmentRoot getPackageFragmentRoot(org.eclipse.core.resources.IResource resource, org.eclipse.core.runtime.IPath entryPath, IClasspathAttribute[] extraAttributes) -
getPackageFragmentRoot
Description copied from interface:IJavaProject
Returns a package fragment root for an external library (a ZIP archive - e.g. a.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 underlyingjava.io.File
may or may not exist. No resource is associated with this local library package fragment root.- Specified by:
getPackageFragmentRoot
in interfaceIJavaProject
- Parameters:
externalLibraryPath
- the library's file system path- Returns:
- a package fragment root for the external library at the specified file system path
- See Also:
-
getPackageFragmentRoot0
public IPackageFragmentRoot getPackageFragmentRoot0(org.eclipse.core.runtime.IPath externalLibraryPath, IClasspathAttribute[] extraAttributes) -
getPackageFragmentRoots
Description copied from interface:IJavaProject
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. The package fragment roots appear in the order they are defined by the classpath.NOTE: This is equivalent to
getChildren()
.- Specified by:
getPackageFragmentRoots
in interfaceIJavaProject
- 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- See Also:
-
getPackageFragmentRoots
Deprecated.Description copied from interface:IJavaProject
Returns the existing package fragment roots identified by the given entry. A classpath entry within the current project identifies 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).
The result does not include package fragment roots in other projects referenced on this project's classpath.
- Specified by:
getPackageFragmentRoots
in interfaceIJavaProject
- Parameters:
entry
- the given entry- Returns:
- the existing package fragment roots identified by the given entry
- See Also:
-
getPackageFragments
Description copied from interface:IJavaProject
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.- Specified by:
getPackageFragments
in interfaceIJavaProject
- 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- See Also:
-
getPackageFragmentsInRoots
Returns all the package fragments found in the specified package fragment roots.- Parameters:
roots
- IPackageFragmentRoot[]- Returns:
- IPackageFragment[]
-
getPath
public org.eclipse.core.runtime.IPath getPath()Description copied from interface:IJavaElement
Returns the path to the innermost resource enclosing this element. If this element is not included in an external library, the path returned is the full, absolute path to the underlying resource, relative to the workbench. If this element is included in an external library, the path returned is the absolute path to the archive or to the folder in the file system. This is a handle-only method.- Specified by:
getPath
in interfaceIJavaElement
- Returns:
- the path to the innermost resource enclosing this element
- See Also:
-
getPerProjectInfo
- Throws:
JavaModelException
-
getProject
public org.eclipse.core.resources.IProject getProject()Description copied from interface:IJavaProject
Returns theIProject
on which thisIJavaProject
was created. This is handle-only method.- Specified by:
getProject
in interfaceIJavaProject
- Returns:
- the
IProject
on which thisIJavaProject
was created - See Also:
-
getJavaProject
Description copied from interface:IJavaElement
Returns the Java project this element is contained in, ornull
if this element is not contained in any Java project (for instance, theIJavaModel
is not contained in any Java project). This is a handle-only method.- Specified by:
getJavaProject
in interfaceIJavaElement
- Overrides:
getJavaProject
in classJavaElement
- Returns:
- the containing Java project, or
null
if this element is not contained in a Java project - See Also:
-
getJavaModel
Description copied from interface:IJavaElement
Returns the Java model. This is a handle-only method.- Specified by:
getJavaModel
in interfaceIJavaElement
- Overrides:
getJavaModel
in classJavaElement
- Returns:
- the Java model
- See Also:
-
getProjectCache
@Deprecated public org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache getProjectCache() throws JavaModelExceptionDeprecated.- Throws:
JavaModelException
-
getProjectCache
public org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache getProjectCache(boolean excludeTestCode) throws JavaModelException - Throws:
JavaModelException
-
getRawClasspath
Description copied from interface:IJavaProject
Returns the raw classpath for the project, as a list of classpath entries. This corresponds to the exact set of entries which were assigned usingsetRawClasspath
, 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 methodgetResolvedClasspath
; classpath variable entries also can be resolved individually usingJavaCore#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.- Specified by:
getRawClasspath
in interfaceIJavaProject
- 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:
-
getReferencedClasspathEntries
Description copied from interface:IJavaProject
Returns the list of referenced classpath entries stored in the .classpath file ofthis
java project. Clients can store the referenced classpath entries usingIJavaProject.setRawClasspath(IClasspathEntry[], IClasspathEntry[], IPath, IProgressMonitor)
If the client has not stored any referenced entries for this project, an empty array is returned.- Specified by:
getReferencedClasspathEntries
in interfaceIJavaProject
- Returns:
- an array of referenced classpath entries stored for this java project or an empty array if none stored earlier.
- Throws:
JavaModelException
- See Also:
-
getRequiredProjectNames
Description copied from interface:IJavaProject
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.
- Specified by:
getRequiredProjectNames
in interfaceIJavaProject
- 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- See Also:
-
getResolvedClasspath
- Throws:
JavaModelException
-
getResolvedClasspath
public IClasspathEntry[] getResolvedClasspath(boolean ignoreUnresolvedEntry) throws JavaModelException Description copied from interface:IJavaProject
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.
Note that if the resolution creates duplicate entries (i.e.
entries
which areObject.equals(Object)
), only the first one is added to the resolved classpath.- Specified by:
getResolvedClasspath
in interfaceIJavaProject
- 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 aJavaModelException
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
isfalse
.
- See Also:
-
resource
-
getSourceMapper
Description copied from class:JavaElement
Returns the SourceMapper facility for this element, ornull
if this element does not have a SourceMapper.- Overrides:
getSourceMapper
in classJavaElement
- See Also:
-
getUnderlyingResource
Description copied from interface:IJavaElement
Returns the smallest underlying resource that contains this element, ornull
if this element is not contained in a resource.- Specified by:
getUnderlyingResource
in interfaceIJavaElement
- Overrides:
getUnderlyingResource
in classOpenable
- Returns:
- the underlying resource, or
null
if none - Throws:
JavaModelException
- if this element does not exist or if an exception occurs while accessing its underlying resource- See Also:
-
hasBuildState
public boolean hasBuildState()Description copied from interface:IJavaProject
Returns whether this project has been built at least once and thus whether it has a build state.- Specified by:
hasBuildState
in interfaceIJavaProject
- Returns:
- true if this project has been built at least once, false otherwise
- See Also:
-
hasClasspathCycle
Description copied from interface:IJavaProject
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.- Specified by:
hasClasspathCycle
in interfaceIJavaProject
- Parameters:
preferredClasspath
- the given classpath entries- Returns:
- true if the given classpath entries would result in a cycle, false otherwise
- See Also:
-
hasCycleMarker
public boolean hasCycleMarker() -
hasSource
public boolean hasSource()Answers true if the project potentially contains any source. A project which has no source is immutable.- Returns:
- boolean
-
isOnClasspath
Description copied from interface:IJavaProject
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.- Specified by:
isOnClasspath
in interfaceIJavaProject
- Parameters:
element
- the given element- Returns:
true
if the given element is on the classpath of this project,false
otherwise- See Also:
-
isOnClasspath
public boolean isOnClasspath(org.eclipse.core.resources.IResource resource) Description copied from interface:IJavaProject
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.- Specified by:
isOnClasspath
in interfaceIJavaProject
- Parameters:
resource
- the given resource- Returns:
true
if the given resource is on the classpath of this project,false
otherwise- See Also:
-
findContainingClasspathEntry
Description copied from interface:IJavaProject
Returns the class path entry which contains the given resource and not explicitly excluded using an exclusion pattern, or null otherwise.- Specified by:
findContainingClasspathEntry
in interfaceIJavaProject
- Parameters:
resource
- the resource which may or may not on one of the class path entries.- Returns:
- the class path entry which contains the given resource, or null, if it's not in any of the classpath entries, or the resource is null.
-
newEvaluationContext
Description copied from interface:IJavaProject
Creates a new evaluation context.- Specified by:
newEvaluationContext
in interfaceIJavaProject
- Returns:
- a new evaluation context.
- See Also:
-
newNameLookup
- Throws:
JavaModelException
-
newNameLookup
public NameLookup newNameLookup(ICompilationUnit[] workingCopies, boolean excludeTestCode) throws JavaModelException - Throws:
JavaModelException
-
newNameLookup
- Throws:
JavaModelException
-
newNameLookup
public NameLookup newNameLookup(WorkingCopyOwner owner, boolean excludeTestCode) throws JavaModelException - Throws:
JavaModelException
-
newSearchableNameEnvironment
public SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies) throws JavaModelException - Throws:
JavaModelException
-
newSearchableNameEnvironment
public SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies, boolean excludeTestCode) throws JavaModelException - Throws:
JavaModelException
-
newSearchableNameEnvironment
public SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner) throws JavaModelException - Throws:
JavaModelException
-
newSearchableNameEnvironment
public SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner, boolean excludeTestCode) throws JavaModelException - Throws:
JavaModelException
-
newTemporaryInfo
-
newTypeHierarchy
public ITypeHierarchy newTypeHierarchy(IRegion region, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.- Specified by:
newTypeHierarchy
in interfaceIJavaProject
- Parameters:
region
- the given regionmonitor
- the given progress monitor- 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- See Also:
-
newTypeHierarchy
public ITypeHierarchy newTypeHierarchy(IRegion region, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
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.
- Specified by:
newTypeHierarchy
in interfaceIJavaProject
- Parameters:
region
- the given regionowner
- the owner of working copies that take precedence over their original compilation unitsmonitor
- the given progress monitor- 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- See Also:
-
newTypeHierarchy
public ITypeHierarchy newTypeHierarchy(IType type, IRegion region, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
Creates and returns a type hierarchy for the given type considering subtypes in the specified region.- Specified by:
newTypeHierarchy
in interfaceIJavaProject
- Parameters:
type
- the given typeregion
- the given regionmonitor
- 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- See Also:
-
newTypeHierarchy
public ITypeHierarchy newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
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.
- Specified by:
newTypeHierarchy
in interfaceIJavaProject
- Parameters:
type
- the given typeregion
- the given regionowner
- the owner of working copies that take precedence over their original compilation unitsmonitor
- 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- See Also:
-
projectPrerequisites
- Throws:
JavaModelException
-
readFileEntriesWithException
public IClasspathEntry[][] readFileEntriesWithException(Map unknownElements) throws org.eclipse.core.runtime.CoreException, IOException, ClasspathEntry.AssertionFailedException Reads the classpath file entries of this project's .classpath file. Returns a two-dimensional array, where the number of elements in the row is fixed to 2. The first element is an array of raw classpath entries, which includes the output entry, and the second element is an array of referenced entries that may have been stored by the client earlier. SeeIJavaProject.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.- Throws:
org.eclipse.core.runtime.CoreException
IOException
ClasspathEntry.AssertionFailedException
-
readOutputLocation
public org.eclipse.core.runtime.IPath readOutputLocation()Description copied from interface:IJavaProject
Returns the default output location for the project as defined by its.classpath
file from disk, ornull
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 usingsetRawClasspath(...)
.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 thereadRawClasspath/readOutputLocation
methods could returnnull
).- Specified by:
readOutputLocation
in interfaceIJavaProject
- Returns:
- the workspace-relative absolute path of the default output folder
- See Also:
-
readRawClasspath
Description copied from interface:IJavaProject
Returns the raw classpath for the project as defined by its.classpath
file from disk, ornull
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 usingsetRawClasspath(...)
.Classpath variable and classpath container entries can be resolved using the helper method
getResolvedClasspath
; classpath variable entries also can be resolved individually usingJavaCore#getClasspathVariable
).Note that no check is performed whether the project has the Java nature set, allowing an existing
.classpath
file to be considered independantly (unlikegetRawClasspath
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 thereadRawClasspath/readOutputLocation
methods could returnnull
).- Specified by:
readRawClasspath
in interfaceIJavaProject
- Returns:
- the raw classpath from disk for the project, as a list of classpath entries
- See Also:
-
resetCaches
public void resetCaches() -
resetResolvedClasspath
-
resolveClasspath
- Throws:
JavaModelException
-
resolveClasspath
public org.aspectj.org.eclipse.jdt.internal.core.JavaProject.ResolvedClasspath resolveClasspath(IClasspathEntry[] rawClasspath, boolean usePreviousSession, boolean resolveChainedLibraries) throws JavaModelException - Throws:
JavaModelException
-
resolveClasspath
public org.aspectj.org.eclipse.jdt.internal.core.JavaProject.ResolvedClasspath resolveClasspath(IClasspathEntry[] rawClasspath, IClasspathEntry[] referencedEntries, boolean usePreviousSession, boolean resolveChainedLibraries) throws JavaModelException - Throws:
JavaModelException
-
resolveClasspath
public void resolveClasspath(JavaModelManager.PerProjectInfo perProjectInfo, boolean usePreviousSession, boolean addClasspathChange) throws JavaModelException - Throws:
JavaModelException
-
rootID
Answers an ID which is used to distinguish project/entries during package fragment root computations- Returns:
- String
-
writeFileEntries
public boolean writeFileEntries(IClasspathEntry[] newClasspath, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.IPath newOutputLocation) throws JavaModelException 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. Will never write an identical one.- Parameters:
newClasspath
- IClasspathEntry[]newOutputLocation
- IPath- Returns:
- boolean Return whether the .classpath file was modified.
- Throws:
JavaModelException
-
writeFileEntries
public boolean writeFileEntries(IClasspathEntry[] newClasspath, org.eclipse.core.runtime.IPath newOutputLocation) throws JavaModelException - Throws:
JavaModelException
-
setOption
Description copied from interface:IJavaProject
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
.- Specified by:
setOption
in interfaceIJavaProject
- Parameters:
optionName
- the name of an optionoptionValue
- the value of the option to set. Ifnull
, then the option is removed from project preferences.- See Also:
-
setOptions
Description copied from interface:IJavaProject
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
.- Specified by:
setOptions
in interfaceIJavaProject
- Parameters:
newOptions
- the new options (key type:String
; value type:String
), ornull
to flush all custom options (clients will automatically get the global JavaCore options).- See Also:
-
setOutputLocation
public void setOutputLocation(org.eclipse.core.runtime.IPath path, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
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).
- Specified by:
setOutputLocation
in interfaceIJavaProject
- Parameters:
path
- the workspace-relative absolute path of the default output foldermonitor
- 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:
-
setRawClasspath
public void setRawClasspath(IClasspathEntry[] entries, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
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 (JavaCore.getClasspathVariable(String)
), or the full classpath can be resolved at once using the helper methodIJavaProject.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.
- Specified by:
setRawClasspath
in interfaceIJavaProject
- Parameters:
entries
- a list of classpath entriescanModifyResources
- whether resources should be written to disk if neededmonitor
- 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(IJavaProject, IClasspathEntry[], IPath)
- See Also:
-
setRawClasspath
public void setRawClasspath(IClasspathEntry[] newRawClasspath, org.eclipse.core.runtime.IPath newOutputLocation, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
Sets 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 (JavaCore.getClasspathVariable(String)
), or the full classpath can be resolved at once using the helper methodIJavaProject.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.
- Specified by:
setRawClasspath
in interfaceIJavaProject
- Parameters:
newRawClasspath
- a list of classpath entriesnewOutputLocation
- the default output locationcanModifyResources
- whether resources should be written to disk if neededmonitor
- 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(IJavaProject, IClasspathEntry[], IPath)
- See Also:
-
setRawClasspath
public void setRawClasspath(IClasspathEntry[] entries, org.eclipse.core.runtime.IPath outputLocation, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
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(String)
), or the full classpath can be resolved at once using the helper methodIJavaProject.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.
- Specified by:
setRawClasspath
in interfaceIJavaProject
- Parameters:
entries
- a list of classpath entriesoutputLocation
- the default output locationmonitor
- the progress monitor- 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)
- See Also:
-
setRawClasspath
public void setRawClasspath(IClasspathEntry[] entries, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.IPath outputLocation, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
Works similar toIJavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor)
and additionally allows persisting the given array of referenced entries for this project. The referenced entries and their attributes are stored in the .classpath file of this project. For details on referenced entries, seeJavaCore.getReferencedClasspathEntries(IClasspathEntry, IJavaProject)
andIClasspathEntry.getReferencingEntry()
.Since the referenced entries are stored in the .classpath file, clients can store additional information that belong to these entries and retrieve them across sessions, though the referenced entries themselves may not be present in the raw classpath. By passing a
null
referencedEntries, clients can choose not to modify the already persisted referenced entries, which is fully equivalent toIJavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor)
. If an empty array is passed as referencedEntries, the already persisted referenced entries, if any, will be cleared.If there are duplicates of a referenced entry or if any of the
referencedEntries
is already present in the raw classpath(entries
) those referenced entries will be excluded and not be persisted.- Specified by:
setRawClasspath
in interfaceIJavaProject
- Parameters:
entries
- a list of classpath entriesreferencedEntries
- the list of referenced classpath entries to be persistedoutputLocation
- the default output locationmonitor
- 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(IJavaProject, IClasspathEntry[], IPath)
- See Also:
-
setRawClasspath
protected void setRawClasspath(IClasspathEntry[] newRawClasspath, IClasspathEntry[] referencedEntries, org.eclipse.core.runtime.IPath newOutputLocation, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException - Throws:
JavaModelException
-
setRawClasspath
public void setRawClasspath(IClasspathEntry[] entries, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaProject
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 (JavaCore.getClasspathVariable(String)
), or the full classpath can be resolved at once using the helper methodIJavaProject.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.
- Specified by:
setRawClasspath
in interfaceIJavaProject
- Parameters:
entries
- a list of classpath entriesmonitor
- 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(IJavaProject, IClasspathEntry[], IPath)
- See Also:
-
updateCycleParticipants
public void updateCycleParticipants(List<org.eclipse.core.runtime.IPath> prereqChain, LinkedHashSet cycleParticipants, Map<org.eclipse.core.runtime.IPath, List<org.aspectj.org.eclipse.jdt.internal.core.JavaProject.CycleInfo>> cyclesPerProject, org.eclipse.core.resources.IWorkspaceRoot workspaceRoot, HashSet traversed, 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)- Parameters:
prereqChain
- ArrayListcycleParticipants
- HashSetworkspaceRoot
- IWorkspaceRoottraversed
- HashSetpreferredClasspaths
- Map
-
validateExistence
protected org.eclipse.core.runtime.IStatus validateExistence(org.eclipse.core.resources.IResource underlyingResource) - Specified by:
validateExistence
in classOpenable
-
getModuleDescription
Description copied from interface:IJavaProject
Returns theIModuleDescription
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 (seeIPackageFragmentRoot.K_SOURCE
) contains a valid Java module descriptor, or if one of its classpath entries has a validIClasspathAttribute.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.- Specified by:
getModuleDescription
in interfaceIJavaProject
- Returns:
- the
IModuleDescription
this project represents. - Throws:
JavaModelException
- if this element does not exist or if an exception occurs while accessing its corresponding resource
-
getOwnModuleDescription
Description copied from interface:IJavaProject
Returns theIModuleDescription
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 (seeIPackageFragmentRoot.K_SOURCE
). In particular anyIClasspathAttribute.PATCH_MODULE
attribute is not considered.- Specified by:
getOwnModuleDescription
in interfaceIJavaProject
- Returns:
- the
IModuleDescription
this project owns. - Throws:
JavaModelException
- if this element does not exist or if an exception occurs while accessing its corresponding resource
-
getPatchedModules
-
getAutomaticModuleDescription
- Throws:
JavaModelException
-
setModuleDescription
- Throws:
JavaModelException
-
getManifest
-
determineModulesOfProjectsWithNonEmptyClasspath
Description copied from interface:IJavaProject
When compiling test code in a modular project that has non-source classpath entries which don't have theIClasspathAttribute.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.- Specified by:
determineModulesOfProjectsWithNonEmptyClasspath
in interfaceIJavaProject
- Returns:
- the set of module names
- Throws:
JavaModelException
- when access to the classpath or module description of the given project fails.
-