[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
[news.eclipse.tools] Re: How to add rt.jar to Java Build path
|
The only special thing the Java wizard does for you is adding the JRE
library to the classpath.
JavaUI introduces the concept of a pluggable JRE (switching JRE without
changing each project's class path), and therefore defines the classpath
variables 'JRE_LIB', 'JRE_SRC' and 'JRE_SRCROOT'. As the Java UI contains
the UI for configuring the JREs, these variables are defined and maintained
by the Java UI plugin: A plugin that uses these variables must have a
dependency on Java UI, and before usage, the Java UI plugin must be loaded.
A problem of the current implementation is that the variable name constants
are not in the public API.
If you depend on the Java UI plugin, and want to use the pluggable JRE, you
would programmatically create a Java project like this:
- create and open a IProject
- set the nature (JavaCore.NATURE_ID)
- get the IJavaProject handle:
IJavaProject jproject= JavaCore.create(project);
- set the classpath, for example
jproject.setRawClasspath(new IClasspathEntry[] {
JavaCore.newSourceEntry(project.getFullPath()),
JavaCore.newVariableEntry("JRE_LIB", "JRE_SRC", "JRE_SRCROOT");
}, progressMonitor);
- set the build output location
jproject.setOutputLocation(project.getFullPath(), progressMonitor);
If you dont want to depend on the Java UI plugin and simply need a location
of a JRE, you can use the jdt.launching plugin and get the location like
using:
org.eclipse.jdt.launching.JavaRuntime.getDefaultVMInstall()
(.getInstallLocation())
The default location is derived from the JRE location used to run eclipse,
and might not find a installation.
When setting the classpath, instead of creating the variable entry, set a
library entry
LibraryLocation loc;
jproject.setRawClasspath(new IClasspathEntry[] {
JavaCore.newSourceEntry(project.getFullPath()),
JavaCore.newVariableEntry(
new Path(loc.getSystemLibrary().getPath()),
new Path(loc.getSystemLibrarySource().getPath()),
loc.getPackageRootPath())
}, progressMonitor);
Martin
"Jeff McAffer" <jeff_mcaffer@xxxxxxx> wrote in message
news:9jp1am$ndo$1@xxxxxxxxxxxxxxxx
> This does not really help someone who is trying to create a Java project
> programmatically. The problem here is that (as far as I have seen) Java
> projects *must* be created using the wizard since the wizard's does
special
> work after creating the project with a Java nature. Unless that work uses
> only API and people want to copy it, making a Java project is hard.
>
> At the very least there should be API for creating a Java project. This
is
> somewhat less than optimal as you may have someone who wants to create a
> project that has the Java, PDE, Foo and Bar natures. Even if they all
> supplied "create" API, you can only create the project once so you have to
> choose one.
>
> This is a general issue for nature-writers to consider. You should assume
> that your nature can be added/removed from a project by people other than
> you.
>
> Jeff
>
> "Martin Aeschlimann" <aeschli@xxxxxxx> wrote in message
> news:9jmctc$ttc$1@xxxxxxxxxxxxxxxx
> > The NewJavaProjectWizardPage creates and configures the JavaProject for
> you.
> > The idea is that you add the NewJavaProjectWizardPage to your wizard.
> > Does this help?
> >
> > Martin
> >
> > "Terry Chan" <terrych@xxxxxxxxxx> wrote in message
> > news:9jhou2$h3g$1@xxxxxxxxxxxxxxxx
> > > Hello,
> > > I have a plugin that programmatically creates a project, and
associates
> it
> > > with the java nature. However, the java project does not have a Java
> > > Build Path. How do I programmatically add the default JRE_LIB rt.jar
to
> > > the project's Java Build path?
> > > Thank you.
> > > Terry