Interface IJavaProject
-
- All Superinterfaces:
IAdaptable,IJavaElement,IOpenable,IParent
public interface IJavaProject extends IParent, IJavaElement, IOpenable
A Java project represents a view of a project resource in terms of Java elements such as package fragments, types, methods and fields. A project may contain several package roots, which contain package fragments. A package root corresponds to an underlying folder or JAR.Each Java project has a classpath, defining which folders contain source code and where required libraries are located. Each Java project also has an output location, defining where the builder writes
.classfiles. A project that references packages in another project can access the packages by including the required project in a classpath entry. The Java model will present the source elements in the required project; when building, the compiler will use the corresponding generated class files from the required project's output location(s)). The classpath format is a sequence of classpath entries describing the location and contents of package fragment roots.Java project elements need to be opened before they can be navigated or manipulated. The children of a Java project are the package fragment roots that are defined by the classpath and contained in this project (in other words, it does not include package fragment roots for other projects). The children (i.e. the package fragment roots) appear in the order they are defined by the classpath.
An instance of one of these handles can be created via
JavaCore.create(project).- See Also:
JavaCore.create(org.eclipse.core.resources.IProject),IClasspathEntry- Restriction:
- This interface is not intended to be implemented by clients.
-
-
Field Summary
Fields Modifier and Type Field Description static StringCLASSPATH_FILE_NAMEPath of the file containing the project's classpath relative to the project's root.-
Fields inherited from interface 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
-
-
Method Summary
All Methods Instance Methods Abstract Methods Deprecated Methods Modifier and Type Method Description IClasspathEntrydecodeClasspathEntry(String encodedEntry)Decodes the classpath entry that has been encoded in the given string in the context of this project.Set<String>determineModulesOfProjectsWithNonEmptyClasspath()When compiling test code in a modular project that has non-source classpath entries which don't have theIClasspathAttribute.MODULEset, 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).StringencodeClasspathEntry(IClasspathEntry classpathEntry)Encodes the given classpath entry into a string in the context of this project.IJavaElementfindElement(String bindingKey, WorkingCopyOwner owner)Finds the Java element corresponding to the given binding key if any, else returnsnull.IJavaElementfindElement(IPath path)Returns theIJavaElementcorresponding to the given classpath-relative path, ornullif no suchIJavaElementis found.IJavaElementfindElement(IPath path, WorkingCopyOwner owner)Returns theIJavaElementcorresponding to the given classpath-relative path, ornullif no suchIJavaElementis found.IModuleDescriptionfindModule(String moduleName, WorkingCopyOwner owner)Finds the first module with the given name found following this project's module path.IPackageFragmentfindPackageFragment(IPath path)Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, ornullif none exist.IPackageFragmentRootfindPackageFragmentRoot(IPath path)Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, ornullif one does not exist.IPackageFragmentRoot[]findPackageFragmentRoots(IClasspathEntry entry)Returns the existing package fragment roots identified by the given entry.ITypefindType(String fullyQualifiedName)Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornullif none is found.ITypefindType(String packageName, String typeQualifiedName)Returns the first type (excluding secondary types) found following this project's classpath with the given package name and type qualified name ornullif none is found.ITypefindType(String packageName, String typeQualifiedName, IProgressMonitor progressMonitor)Same functionality asfindType(String, String)but also looks for secondary types if the given name does not match a compilation unit name.ITypefindType(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 ornullif none is found.ITypefindType(String packageName, String typeQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor)Same functionality asfindType(String, String, WorkingCopyOwner)but also looks for secondary types if the given name does not match a compilation unit name.ITypefindType(String fullyQualifiedName, IProgressMonitor progressMonitor)Same functionality asfindType(String)but also looks for secondary types if the given name does not match a compilation unit name.ITypefindType(String fullyQualifiedName, WorkingCopyOwner owner)Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornullif none is found.ITypefindType(String fullyQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor)Same functionality asfindType(String, WorkingCopyOwner)but also looks for secondary types if the given name does not match a compilation unit name.IPackageFragmentRoot[]findUnfilteredPackageFragmentRoots(IClasspathEntry entry)In a Java 9 project, a classpath entry can be filtered using aIClasspathAttribute.LIMIT_MODULESattribute, otherwise for an unnamed module a default set of roots is used as defined in JEP 261.IPackageFragmentRoot[]getAllPackageFragmentRoots()Returns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.IClasspathEntrygetClasspathEntryFor(IPath path)Returns the classpath entry that refers to the given path ornullif there is no reference to the path.IModuleDescriptiongetModuleDescription()Returns theIModuleDescriptionthis project represents or null if the Java project doesn't represent any named module.Object[]getNonJavaResources()Returns an array of non-Java resources directly contained in this project.StringgetOption(String optionName, boolean inheritJavaCoreOptions)Helper method for returning one option value only.Map<String,String>getOptions(boolean inheritJavaCoreOptions)Returns the table of the current custom options for this project.IPathgetOutputLocation()Returns the default output location for this project as a workspace- relative absolute path.IModuleDescriptiongetOwnModuleDescription()Returns theIModuleDescriptionowned by this project or null if the Java project doesn't own a valid Java module descriptor.IPackageFragmentRootgetPackageFragmentRoot(String externalLibraryPath)Returns a package fragment root for an external library (a ZIP archive - e.g. a.jar, a.zipfile, etc. - or - since 3.4 - a class folder) at the specified file system path.IPackageFragmentRootgetPackageFragmentRoot(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. a.jar, a.zipfile, etc.)IPackageFragmentRoot[]getPackageFragmentRoots()Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath.IPackageFragmentRoot[]getPackageFragmentRoots(IClasspathEntry entry)Deprecated.UsefindPackageFragmentRoots(IClasspathEntry)insteadIPackageFragment[]getPackageFragments()Returns all package fragments in all package fragment roots contained in this project.IProjectgetProject()Returns theIProjecton which thisIJavaProjectwas created.IClasspathEntry[]getRawClasspath()Returns the raw classpath for the project, as a list of classpath entries.IClasspathEntry[]getReferencedClasspathEntries()Returns the list of referenced classpath entries stored in the .classpath file ofthisjava project.String[]getRequiredProjectNames()Returns the names of the projects that are directly required by this project.IClasspathEntry[]getResolvedClasspath(boolean ignoreUnresolvedEntry)This is a helper method returning the resolved classpath for the project as a list of simple (non-variable, non-container) classpath entries.booleanhasBuildState()Returns whether this project has been built at least once and thus whether it has a build state.booleanhasClasspathCycle(IClasspathEntry[] entries)Returns whether setting this project's classpath to the given classpath entries would result in a cycle.booleanisOnClasspath(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.booleanisOnClasspath(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.IEvaluationContextnewEvaluationContext()Creates a new evaluation context.ITypeHierarchynewTypeHierarchy(IRegion region, IProgressMonitor monitor)Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.ITypeHierarchynewTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner.ITypeHierarchynewTypeHierarchy(IType type, IRegion region, IProgressMonitor monitor)Creates and returns a type hierarchy for the given type considering subtypes in the specified region.ITypeHierarchynewTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner.IPathreadOutputLocation()Returns the default output location for the project as defined by its.classpathfile from disk, ornullif unable to read the file.IClasspathEntry[]readRawClasspath()Returns the raw classpath for the project as defined by its.classpathfile from disk, ornullif unable to read the file.voidsetOption(String optionName, String optionValue)Helper method for setting one option value only.voidsetOptions(Map<String,String> newOptions)Sets the project custom options.voidsetOutputLocation(IPath path, IProgressMonitor monitor)Sets the default output location of this project to the location described by the given workspace-relative absolute path.voidsetRawClasspath(IClasspathEntry[] entries, boolean canModifyResources, IProgressMonitor monitor)Sets the classpath of this project using a list of classpath entries.voidsetRawClasspath(IClasspathEntry[] entries, IPath outputLocation, boolean canModifyResources, IProgressMonitor monitor)Sets both the classpath of this project and its default output location at once.voidsetRawClasspath(IClasspathEntry[] entries, IPath outputLocation, IProgressMonitor monitor)Sets the both the classpath of this project and its default output location at once.voidsetRawClasspath(IClasspathEntry[] entries, IProgressMonitor monitor)Sets the classpath of this project using a list of classpath entries.voidsetRawClasspath(IClasspathEntry[] entries, IClasspathEntry[] referencedEntries, IPath outputLocation, IProgressMonitor monitor)Works similar tosetRawClasspath(IClasspathEntry[], IPath, IProgressMonitor)and additionally allows persisting the given array of referenced entries for this project.-
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
-
Methods inherited from interface org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getElementName, getElementType, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPath, getPrimaryElement, getResource, getSchedulingRule, getUnderlyingResource, isReadOnly, isStructureKnown
-
Methods inherited from interface org.eclipse.jdt.core.IOpenable
close, findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save
-
Methods inherited from interface org.eclipse.jdt.core.IParent
getChildren, hasChildren
-
-
-
-
Field Detail
-
CLASSPATH_FILE_NAME
static final String CLASSPATH_FILE_NAME
Path of the file containing the project's classpath relative to the project's root.The file is a child of the project folder.
The format of this file is unspecified and it is not meant to be modified. Its contents is modified by using the
IJavaProject#setRawClasspath(..)methods.- Since:
- 3.7
- See Also:
setRawClasspath(IClasspathEntry[], IProgressMonitor),setRawClasspath(IClasspathEntry[], boolean, IProgressMonitor),setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor),setRawClasspath(IClasspathEntry[], IClasspathEntry[], IPath, IProgressMonitor),setRawClasspath(IClasspathEntry[], IPath, boolean, IProgressMonitor), Constant Field Values
-
-
Method Detail
-
decodeClasspathEntry
IClasspathEntry decodeClasspathEntry(String encodedEntry)
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.- Parameters:
encodedEntry- the encoded classpath entry- Returns:
- the decoded classpath entry, or
nullif unable to decode it - Since:
- 3.2
-
encodeClasspathEntry
String encodeClasspathEntry(IClasspathEntry classpathEntry)
Encodes the given classpath entry into a string in the context of this project.- Parameters:
classpathEntry- the classpath entry to encode- Returns:
- the encoded classpath entry
- Since:
- 3.2
-
findElement
IJavaElement findElement(IPath path) throws JavaModelException
Returns theIJavaElementcorresponding to the given classpath-relative path, ornullif no suchIJavaElementis 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
ICompilationUnitorIClassFilecorresponding to "java.lang.Object". The path "java/lang" would result in theIPackageFragmentfor "java.lang".- Parameters:
path- the given classpath-relative path- Returns:
- the
IJavaElementcorresponding to the given classpath-relative path, ornullif no suchIJavaElementis found - Throws:
JavaModelException- if the given path isnullor absolute
-
findElement
IJavaElement findElement(IPath path, WorkingCopyOwner owner) throws JavaModelException
Returns theIJavaElementcorresponding to the given classpath-relative path, ornullif no suchIJavaElementis 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
ICompilationUnitorIClassFilecorresponding to "java.lang.Object". The path "java/lang" would result in theIPackageFragmentfor "java.lang".- Parameters:
path- the given classpath-relative pathowner- the owner of the returned compilation unit, ignored if it is not a compilation unit.- Returns:
- the
IJavaElementcorresponding to the given classpath-relative path, ornullif no suchIJavaElementis found - Throws:
JavaModelException- if the given path isnullor absolute- Since:
- 3.0
-
findElement
IJavaElement findElement(String bindingKey, WorkingCopyOwner owner) throws JavaModelException
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:
IPackageFragmentfor a binding key from anIPackageBindingITypefor a binding key from anITypeBindingIMethodfor a binding key from anIMethodBindingIFieldfor a binding key from anIVariableBindingrepresenting afieldITypeParameterfor a binding key from anITypeBindingrepresenting atype variableIAnnotationfor 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.- Parameters:
bindingKey- the given binding keyowner- the owner of the returned element's compilation unit, ornullif the default working copy owner must be used- Returns:
- the Java element corresponding to the given key,
or
nullif no such Java element is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.4
-
findPackageFragment
IPackageFragment findPackageFragment(IPath path) throws JavaModelException
Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, ornullif none exist. The path can be: - internal to the workbench: "/Project/src" - external to the workbench: "c:/jdk/classes.zip/java/lang"- Parameters:
path- the given absolute path- Returns:
- the first existing package fragment on this project's classpath
whose path matches the given (absolute) path, or
nullif none exist - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource
-
findPackageFragmentRoot
IPackageFragmentRoot findPackageFragmentRoot(IPath path) throws JavaModelException
Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, ornullif one does not exist. The path can be: - internal to the workbench: "/Compiler/src" - external to the workbench: "c:/jdk/classes.zip"- Parameters:
path- the given absolute path- Returns:
- the existing package fragment root on this project's classpath
whose path matches the given (absolute) path, or
nullif one does not exist - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource
-
findPackageFragmentRoots
IPackageFragmentRoot[] findPackageFragmentRoots(IClasspathEntry entry)
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.
- Parameters:
entry- the given entry- Returns:
- the existing package fragment roots identified by the given entry
- Since:
- 2.1
- See Also:
IClasspathContainer
-
findUnfilteredPackageFragmentRoots
IPackageFragmentRoot[] findUnfilteredPackageFragmentRoots(IClasspathEntry entry)
In a Java 9 project, a classpath entry can be filtered using aIClasspathAttribute.LIMIT_MODULESattribute, otherwise for an unnamed module a default set of roots is used as defined in JEP 261. In both casesfindPackageFragmentRoots(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.
- Parameters:
entry- a classpath entry of this Java project- Returns:
- the unfiltered array of package fragment roots to which the classpath entry resolves
- Since:
- 3.14
- See Also:
findPackageFragmentRoots(IClasspathEntry)
-
findType
IType findType(String fullyQualifiedName) throws JavaModelException
Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornullif 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 usefindType(String, IProgressMonitor)instead.- Parameters:
fullyQualifiedName- the given fully qualified name- Returns:
- the first type found following this project's classpath
with the given fully qualified name or
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 2.0
- See Also:
IType.getFullyQualifiedName(char)
-
findType
IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException
Same functionality asfindType(String)but also looks for secondary types if the given name does not match a compilation unit name.- Parameters:
fullyQualifiedName- the given fully qualified nameprogressMonitor- the progress monitor to report progress to, ornullif no progress monitor is provided- Returns:
- the first type found following this project's classpath
with the given fully qualified name or
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.2
- See Also:
IType.getFullyQualifiedName(char)
-
findType
IType findType(String fullyQualifiedName, WorkingCopyOwner owner) throws JavaModelException
Returns the first type (excluding secondary types) found following this project's classpath with the given fully qualified name ornullif 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 usefindType(String, WorkingCopyOwner, IProgressMonitor)instead.- 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
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.0
- See Also:
IType.getFullyQualifiedName(char)
-
findType
IType findType(String fullyQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException
Same functionality asfindType(String, WorkingCopyOwner)but also looks for secondary types if the given name does not match a compilation unit name.- Parameters:
fullyQualifiedName- the given fully qualified nameowner- the owner of the returned type's compilation unitprogressMonitor- the progress monitor to report progress to, ornullif no progress monitor is provided- Returns:
- the first type found following this project's classpath
with the given fully qualified name or
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.2
- See Also:
IType.getFullyQualifiedName(char)
-
findType
IType findType(String packageName, String typeQualifiedName) throws JavaModelException
Returns the first type (excluding secondary types) found following this project's classpath with the given package name and type qualified name ornullif 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 usefindType(String, String, IProgressMonitor)instead.- 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
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 2.0
- See Also:
IType.getTypeQualifiedName(char)
-
findType
IType findType(String packageName, String typeQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException
Same functionality asfindType(String, String)but also looks for secondary types if the given name does not match a compilation unit name.- Parameters:
packageName- the given package nametypeQualifiedName- the given type qualified nameprogressMonitor- the progress monitor to report progress to, ornullif no progress monitor is provided- Returns:
- the first type found following this project's classpath
with the given fully qualified name or
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.2
- See Also:
IType.getFullyQualifiedName(char)
-
findType
IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner) throws JavaModelException
Returns the first type (excluding secondary types) found following this project's classpath with the given package name and type qualified name ornullif 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 usefindType(String, String, WorkingCopyOwner, IProgressMonitor)instead.- 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
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.0
- See Also:
IType.getTypeQualifiedName(char)
-
findType
IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException
Same functionality asfindType(String, String, WorkingCopyOwner)but also looks for secondary types if the given name does not match a compilation unit name.- 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, ornullif no progress monitor is provided- Returns:
- the first type found following this project's classpath
with the given fully qualified name or
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.2
- See Also:
IType.getFullyQualifiedName(char)
-
findModule
IModuleDescription findModule(String moduleName, WorkingCopyOwner owner) throws JavaModelException
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.- 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
nullif none is found - Throws:
JavaModelException- if this project does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.14
-
getAllPackageFragmentRoots
IPackageFragmentRoot[] getAllPackageFragmentRoots() throws JavaModelException
Returns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.- Returns:
- all of the existing package fragment roots that exist on the classpath
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource
-
getNonJavaResources
Object[] getNonJavaResources() throws JavaModelException
Returns an array of non-Java resources directly contained in this project. It does not transitively answer non-Java resources contained in folders; these would have to be explicitly iterated over.Non-Java resources includes other files and folders located in the project not accounted for by any of it source or binary package fragment roots. If the project is a source folder itself, resources excluded from the corresponding source classpath entry by one or more exclusion patterns are considered non-Java resources and will appear in the result (possibly in a folder)
- Returns:
- an array of non-Java resources (
IFiles and/orIFolders) directly contained in this project - Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource
-
getOption
String getOption(String optionName, boolean inheritJavaCoreOptions)
Helper method for returning one option value only. Equivalent to(String)this.getOptions(inheritJavaCoreOptions).get(optionName)Note that it may answernullif this option does not exist, or if there is no custom value for it.For a complete description of the configurable options, see
JavaCore#getDefaultOptions.- Parameters:
optionName- the name of an optioninheritJavaCoreOptions- - boolean indicating whether JavaCore options should be inherited as well- Returns:
- the String value of a given option
- Since:
- 2.1
- See Also:
JavaCore.getDefaultOptions()
-
getOptions
Map<String,String> getOptions(boolean inheritJavaCoreOptions)
Returns the table of the current custom options for this project. Projects remember their custom options, in other words, only the options different from the the JavaCore global options for the workspace. A boolean argument allows to directly merge the project options with global ones fromJavaCore.For a complete description of the configurable options, see
JavaCore#getDefaultOptions.- Parameters:
inheritJavaCoreOptions- - boolean indicating whether JavaCore options should be inherited as well- Returns:
- table of current settings of all options
(key type:
String; value type:String) - Since:
- 2.1
- See Also:
JavaCore.getDefaultOptions()
-
getOutputLocation
IPath getOutputLocation() throws JavaModelException
Returns the default output location for this project as a workspace- relative absolute path.The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entry can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange generated class files for different source folders in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).
- Returns:
- the workspace-relative absolute path of the default output folder
- Throws:
JavaModelException- if this element does not exist- See Also:
setOutputLocation(org.eclipse.core.runtime.IPath, IProgressMonitor),IClasspathEntry.getOutputLocation()
-
getPackageFragmentRoot
IPackageFragmentRoot getPackageFragmentRoot(String externalLibraryPath)
Returns a package fragment root for an external library (a ZIP archive - e.g. a.jar, a.zipfile, etc. - or - since 3.4 - a class folder) at the specified file system path. This is a handle-only method. The underlyingjava.io.Filemay or may not exist. No resource is associated with this local library package fragment root.- Parameters:
externalLibraryPath- the library's file system path- Returns:
- a package fragment root for the external library at the specified file system path
-
getPackageFragmentRoot
IPackageFragmentRoot getPackageFragmentRoot(IResource resource)
Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a ZIP archive (e.g. a.jar, a.zipfile, etc.) This is a handle-only method. The underlying resource may or may not exist.- Parameters:
resource- the given resource- Returns:
- a package fragment root for the given resource, which
must either be a folder representing the top of a package hierarchy,
or a ZIP archive (e.g. a
.jar, a.zipfile, etc.)
-
getPackageFragmentRoots
IPackageFragmentRoot[] getPackageFragmentRoots() throws JavaModelException
Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath. The result does not include package fragment roots in other projects referenced on this project's classpath. The package fragment roots appear in the order they are defined by the classpath.NOTE: This is equivalent to
getChildren().- Returns:
- all of the package fragment roots contained in this project, identified on this project's resolved classpath
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource
-
getPackageFragmentRoots
IPackageFragmentRoot[] getPackageFragmentRoots(IClasspathEntry entry)
Deprecated.UsefindPackageFragmentRoots(IClasspathEntry)insteadReturns 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.
- Parameters:
entry- the given entry- Returns:
- the existing package fragment roots identified by the given entry
- See Also:
IClasspathContainer
-
getPackageFragments
IPackageFragment[] getPackageFragments() throws JavaModelException
Returns all package fragments in all package fragment roots contained in this project. This is a convenience method. Note that the package fragment roots corresponds to the resolved classpath of the project.- Returns:
- all package fragments in all package fragment roots contained in this project
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource
-
getProject
IProject getProject()
Returns theIProjecton which thisIJavaProjectwas created. This is handle-only method.- Returns:
- the
IProjecton which thisIJavaProjectwas created
-
getModuleDescription
IModuleDescription getModuleDescription() throws JavaModelException
Returns theIModuleDescriptionthis 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_MODULEattribute affecting the current project. In the latter case the corresponding module description of the location referenced by that classpath entry is returned.- Returns:
- the
IModuleDescriptionthis project represents. - Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource- Since:
- 3.14
-
getOwnModuleDescription
IModuleDescription getOwnModuleDescription() throws JavaModelException
Returns theIModuleDescriptionowned 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_MODULEattribute is not considered.- Returns:
- the
IModuleDescriptionthis project owns. - Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resourceJavaModelException- Since:
- 3.20
-
getRawClasspath
IClasspathEntry[] getRawClasspath() throws JavaModelException
Returns the raw classpath for the project, as a list of classpath entries. This corresponds to the exact set of entries which were assigned 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
.classpathfile 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
.classpathfile.- Returns:
- the raw classpath for the project, as a list of classpath entries
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource- See Also:
IClasspathEntry
-
getRequiredProjectNames
String[] getRequiredProjectNames() throws JavaModelException
Returns the names of the projects that are directly required by this project. A project is required if it is in its classpath.The project names are returned in the order they appear on the classpath.
- Returns:
- the names of the projects that are directly required by this project in classpath order
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource
-
getResolvedClasspath
IClasspathEntry[] getResolvedClasspath(boolean ignoreUnresolvedEntry) throws JavaModelException
This is a helper method returning the resolved classpath for the project as a list of simple (non-variable, non-container) classpath entries. All classpath variable and classpath container entries in the project's raw classpath will be replaced by the simple classpath entries they resolve to.The resulting resolved classpath is accurate for the given point in time. If the project's raw classpath is later modified, or if classpath variables are changed, the resolved classpath can become out of date. Because of this, hanging on resolved classpath is not recommended.
Note that if the resolution creates duplicate entries (i.e.
entrieswhich areObject.equals(Object)), only the first one is added to the resolved classpath.- Parameters:
ignoreUnresolvedEntry- indicates how to handle unresolvable variables and containers;trueindicates 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;falseindicates that aJavaModelExceptionshould 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
ignoreUnresolvedEntryisfalse.
- See Also:
IClasspathEntry
-
hasBuildState
boolean hasBuildState()
Returns whether this project has been built at least once and thus whether it has a build state.- Returns:
- true if this project has been built at least once, false otherwise
-
hasClasspathCycle
boolean hasClasspathCycle(IClasspathEntry[] entries)
Returns whether setting this project's classpath to the given classpath entries would result in a cycle. If the set of entries contains some variables, those are resolved in order to determine cycles.- Parameters:
entries- the given classpath entries- Returns:
- true if the given classpath entries would result in a cycle, false otherwise
-
isOnClasspath
boolean isOnClasspath(IJavaElement element)
Returns whether the given element is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.- Parameters:
element- the given element- Returns:
trueif the given element is on the classpath of this project,falseotherwise- Since:
- 2.0
- See Also:
IClasspathEntry.getInclusionPatterns(),IClasspathEntry.getExclusionPatterns()
-
isOnClasspath
boolean isOnClasspath(IResource resource)
Returns whether the given resource is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.- Parameters:
resource- the given resource- Returns:
trueif the given resource is on the classpath of this project,falseotherwise- Since:
- 2.1
- See Also:
IClasspathEntry.getInclusionPatterns(),IClasspathEntry.getExclusionPatterns()
-
newEvaluationContext
IEvaluationContext newEvaluationContext()
Creates a new evaluation context.- Returns:
- a new evaluation context.
-
newTypeHierarchy
ITypeHierarchy newTypeHierarchy(IRegion region, IProgressMonitor monitor) throws JavaModelException
Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.- Parameters:
monitor- the given progress monitorregion- the given region- Returns:
- a type hierarchy for all types in the given region, considering subtypes within that region
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resourceIllegalArgumentException- if region isnull
-
newTypeHierarchy
ITypeHierarchy newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException
Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.
- Parameters:
monitor- the given progress monitorregion- the given regionowner- the owner of working copies that take precedence over their original compilation units- Returns:
- a type hierarchy for all types in the given region, considering subtypes within that region
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resourceIllegalArgumentException- if region isnull- Since:
- 3.0
-
newTypeHierarchy
ITypeHierarchy newTypeHierarchy(IType type, IRegion region, IProgressMonitor monitor) throws JavaModelException
Creates and returns a type hierarchy for the given type considering subtypes in the specified region.- Parameters:
type- the given 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 resourceIllegalArgumentException- if type or region isnull
-
newTypeHierarchy
ITypeHierarchy newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException
Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.
- Parameters:
type- the given typeregion- the given regionmonitor- the given monitorowner- the owner of working copies that take precedence over their original compilation units- Returns:
- a type hierarchy for the given type considering subtypes in the specified region
- Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resourceIllegalArgumentException- if type or region isnull- Since:
- 3.0
-
readOutputLocation
IPath readOutputLocation()
Returns the default output location for the project as defined by its.classpathfile from disk, ornullif 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.classpathfile 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/readOutputLocationmethods could returnnull).- Returns:
- the workspace-relative absolute path of the default output folder
- Since:
- 3.0
- See Also:
getOutputLocation()
-
readRawClasspath
IClasspathEntry[] readRawClasspath()
Returns the raw classpath for the project as defined by its.classpathfile from disk, ornullif 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.classpathfile 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
.classpathfile to be considered independantly (unlikegetRawClasspathwhich 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/readOutputLocationmethods could returnnull).- Returns:
- the raw classpath from disk for the project, as a list of classpath entries
- Since:
- 3.0
- See Also:
getRawClasspath(),IClasspathEntry
-
setOption
void setOption(String optionName, String optionValue)
Helper method for setting one option value only.Equivalent to:
Map options = this.getOptions(false); map.put(optionName, optionValue); this.setOptions(map)For a complete description of the configurable options, see
JavaCore#getDefaultOptions.- Parameters:
optionName- the name of an optionoptionValue- the value of the option to set. Ifnull, then the option is removed from project preferences.- Throws:
NullPointerException- ifoptionNameisnull(seePreferences.put(String, String)).- Since:
- 3.0
- See Also:
JavaCore.getDefaultOptions()
-
setOptions
void setOptions(Map<String,String> newOptions)
Sets the project custom options. All and only the options explicitly included in the given table are remembered; all previous option settings are forgotten, including ones not explicitly mentioned.For a complete description of the configurable options, see
JavaCore#getDefaultOptions.- Parameters:
newOptions- the new options (key type:String; value type:String), ornullto flush all custom options (clients will automatically get the global JavaCore options).- Since:
- 2.1
- See Also:
JavaCore.getDefaultOptions()
-
setOutputLocation
void setOutputLocation(IPath path, IProgressMonitor monitor) throws JavaModelException
Sets the default output location of this project to the location described by the given workspace-relative absolute path.The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entries can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange that generated class files for different source folders to end up in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).
- Parameters:
path- the workspace-relative absolute path of the default output 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:
getOutputLocation(),IClasspathEntry.getOutputLocation()
-
setRawClasspath
void setRawClasspath(IClasspathEntry[] entries, IPath outputLocation, boolean canModifyResources, IProgressMonitor monitor) throws JavaModelException
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 methodgetResolvedClasspath(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
nullspecifies 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
hasClasspathCycle(IClasspathEntry[])before setting the classpath.This operation acquires a lock on the workspace's root.
- Parameters:
entries- a list of classpath entriesoutputLocation- 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)
- Since:
- 3.2
- See Also:
IClasspathEntry
-
setRawClasspath
void setRawClasspath(IClasspathEntry[] entries, boolean canModifyResources, IProgressMonitor monitor) throws JavaModelException
Sets the classpath of this project using a list of classpath entries. In particular such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (JavaCore.getClasspathVariable(String)), or the full classpath can be resolved at once using the helper methodgetResolvedClasspath(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
nullspecifies 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
hasClasspathCycle(IClasspathEntry[])before setting the classpath.This operation acquires a lock on the workspace's root.
- 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)
- Since:
- 3.2
- See Also:
IClasspathEntry
-
setRawClasspath
void setRawClasspath(IClasspathEntry[] entries, IClasspathEntry[] referencedEntries, IPath outputLocation, IProgressMonitor monitor) throws JavaModelException
Works similar tosetRawClasspath(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
nullreferencedEntries, clients can choose not to modify the already persisted referenced entries, which is fully equivalent tosetRawClasspath(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
referencedEntriesis already present in the raw classpath(entries) those referenced entries will be excluded and not be persisted.- 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)
- Since:
- 3.6
- See Also:
IClasspathEntry,getReferencedClasspathEntries()
-
getReferencedClasspathEntries
IClasspathEntry[] getReferencedClasspathEntries() throws JavaModelException
Returns the list of referenced classpath entries stored in the .classpath file ofthisjava project. Clients can store the referenced classpath entries usingsetRawClasspath(IClasspathEntry[], IClasspathEntry[], IPath, IProgressMonitor)If the client has not stored any referenced entries for this project, an empty array is returned.- Returns:
- an array of referenced classpath entries stored for this java project or an empty array if none stored earlier.
- Throws:
JavaModelException- Since:
- 3.6
-
setRawClasspath
void setRawClasspath(IClasspathEntry[] entries, IProgressMonitor monitor) throws JavaModelException
Sets the classpath of this project using a list of classpath entries. In particular such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (JavaCore.getClasspathVariable(String)), or the full classpath can be resolved at once using the helper methodgetResolvedClasspath(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
nullspecifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.If a cycle is detected while setting this classpath, an error marker will be added to the project closing the cycle. To avoid this problem, use
hasClasspathCycle(IClasspathEntry[])before setting the classpath.This operation acquires a lock on the workspace's root.
- 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:
IClasspathEntry
-
setRawClasspath
void setRawClasspath(IClasspathEntry[] entries, IPath outputLocation, IProgressMonitor monitor) throws JavaModelException
Sets the both the classpath of this project and its default output location at once. The classpath is defined using a list of classpath entries. In particular, such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (see (JavaCore.getClasspathVariable(String)), or the full classpath can be resolved at once using the helper methodgetResolvedClasspath(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
nullspecifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.If a cycle is detected while setting this classpath, an error marker will be added to the project closing the cycle. To avoid this problem, use
hasClasspathCycle(IClasspathEntry[])before setting the classpath.This operation acquires a lock on the workspace's root.
- Parameters:
entries- a list of classpath entriesmonitor- the progress monitoroutputLocation- the default output location- Throws:
JavaModelException- if the classpath could not be set. Reasons include:- This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
- Two or more entries specify source roots with the same or overlapping paths (NAME_COLLISION)
- A entry of kind
CPE_PROJECTrefers to this project (INVALID_PATH) - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
- The output location path refers to a location not contained in this project (
PATH_OUTSIDE_PROJECT) - The output location path is not an absolute path (
RELATIVE_PATH) - The output location path is nested inside a package fragment root of this project (
INVALID_PATH) - The classpath is being modified during resource change event notification (CORE_EXCEPTION)
- Since:
- 2.0
- See Also:
IClasspathEntry
-
getClasspathEntryFor
IClasspathEntry getClasspathEntryFor(IPath path) throws JavaModelException
Returns the classpath entry that refers to the given path ornullif there is no reference to the path.- Parameters:
path- IPath- Returns:
- the classpath entry or
null. - Throws:
JavaModelException- Since:
- 3.14
-
determineModulesOfProjectsWithNonEmptyClasspath
Set<String> determineModulesOfProjectsWithNonEmptyClasspath() throws JavaModelException
When compiling test code in a modular project that has non-source classpath entries which don't have theIClasspathAttribute.MODULEset, 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.- Returns:
- the set of module names
- Throws:
JavaModelException- when access to the classpath or module description of the given project fails.- Since:
- 3.14
-
-