(Last updated: April 19, 2017)
This document describes the steps to install and configure the various Java development tools used in COP-2805. Please note that many of the install locations and settings are my personal preferences, and that installing to different locations and using different environment variable settings is certainly acceptable; whatever works best for you. Note the setup described here conforms to Oracle (formerly Sun) recommendations for the JDK and JRE setup.
For all tools, when there is a choice use the 64-bit version on a 64-bit computer. Only use 32-bit versions if you are using an older 32-bit computer and OS.
Web browsers are mostly 32-bit today, and won't work with 64-bit plugins such as the JRE plug-in. However, most popular web browsers today no longer support old-style plug-ins anyway, so Java Applets won't work regardless.
If you wish to use Java applets, you should install an appropriate browser such as Pale Moon that still supports the old plug-in API (“NSAPI”), and then install the 32-bit versions of Java and other tools (such as Eclipse), instead of the 64-bit versions. Many tools will work regardless of the Java type you install, but not Eclipse and possibly others. Finally, note that Oracle has announce that applet support (the web browser plugin) will be deprecated in Java 9 and eliminated in a future release.
In our course we will explore many tools, including both the Eclipse and NetBeans IDEs. The IDEs often include bundled versions of some tools, such as Ant, JUnit, and Maven. While you could locate where these were previously installed with NetBeans (or Eclipse), and configure these tools to refer to those locations, these tools are small and it doesn't hurt to install the extra versions that come with the tools. By installing the tools separately (and before any IDEs), you can access them easily from the command line and update them when updates are available, without waiting for an update from NetBeans (or Eclipse), which may cause you to have to reconfigure other tools to know about the new locations and pathnames.
One of my personal preferences is to install tools into directories without version numbers. Then if I update some tool and put the new version into the same location, I don't have to update any environment variables or reconfigure any IDE to know about the new locations.
The order you download and install tools may not matter much, but I like to install and configure the environment variables for some tools before installing IDEs or the Glassfish Java EE server. (There is a chance those installers will locate the tools and configure themselves to use those locations, rather than install a separate version. Even if they don't, I have found in the past the NetBeans install of Glassfish isn't current, and doesn't update properly.)
Note that these directions are tested on Windows 7. If you wish any additional help, don't hesitate to ask!
C:\Java(which is where we will install the JDK),
C:\Java\MyJars(which is where we can put any needed Jar files that aren't already listed on
C:\Java\glassfish4(which is where we will install the Glassfish Java EE server). If you don't like the name
MyJars, pick another; I've also used
This makes a backup copy of all your environment variables, always a
good idea before making changes that can prevent your system from
env.txt, just in case.
As a reminder:
PATH is used by your system to locate executables
CLASSPATH is used
by Java to locate packages and some other things;
used by various programs (including Maven) to locate a JDK; and
M2_HOME is used by
mvn to locate various
All of these may be used by other programs (such as any Java EE
server like Glassfish) to locate files they need.
While some programs are smart enough to guess to try default install locations
when you don't set these variables, that won't work if you don't install
in the default locations.
It is okay if your
CLASSPATH setting has an additional
entry at the end.
(The Apple QuickTime installer used to add one, but it isn't needed unless you
want to use QuickTime from your Java applications.
Even in that case, you don't need that entry on
Just put the
QTJava.zip file in the
C:\Java\MyJars\ folder, and change the
QTJAVA environment variable to refer to
the zip file at its new location.)
Make sure you don't forget to include the leading period!
%DERBY_HOME%\libfolder must be listed on the CLASSPATH:
derby.jar derbyclient.jar derbynet.jar derbytools.jar
While only two files are actually needed, the ones used would depend on
the mode of your database (server or embedded).
Adding all four ensures you can use the Derby database in any mode, and
the simple way to include these Jars is to list
on CLASSPATH, as shown above.
Add these entries to the
PATH environment variable:
C:\Java\bin C:\Java\ant\bin C:\Java\maven\bin C:\Java\db\bin C:\Java\glassfish4\bin
(Using environment variables in
such as “
instead of “
C:\Java\bin”, just won't work in
The order these are listed in
PATH shouldn't matter, but it might
if your system uses an older
java.exe often installed by default
while the Java installer should updated that, sometimes it doesn't,
so list your Java paths early on
PATH, but after the one the
installer puts in for the new JRE (see the box below for details).
Note that the public JRE that was installed isn't
listed above as an something for you to add to the PATH.
As of Java 8, the installer adds the directory
That folder contains short-cuts to the public JRE's executables.
Note you may not even need the public JRE on
The reason is, the tools in the
JAVA_HOME\bin folder are
identical to the ones in the JRE's
You don't need to list both locations unless you plan on installing multiple
That might happen if you need to test your code against multiple
JREs, or if you leave the Java automatic updater turned on.
In that case, the public JRE you plan on using
C:\Program Files...\Java\jre8\bin) must precede
the JDK's private JRE
PATH, or the public
JRE won't be used.
In this case, remember there are configuration files in the JRE,
so settings changed in one JRE won't affect other
You can also just not install the public JRE when running the installer, but I don't recommend that. Windows contains a registry setting used by some apps (some IDEs, web browsers, etc.) to find a JRE to use. That is usually the public JRE installed last. If you don't install the public JRE, that setting is unchanged and may point to an older version of Java, or a version that you've already deleted. (This registry update is why it sometimes requires a reboot when updating Java, before the new version is used by all applications.)
PATH doesn't already refer to any older JRE
or JDK that might have been previously installed.
Note, some vendors pre-install a JRE in
(or some other location already listed on
If you think that is the case (that is, when you check the version used from
the command line and it shows an old version), you should delete that old entry.
Remember that both
CLASSPATH are a list of
folders (or, for
CLASSPATH, folders, jar files,
and zip files).
Each one is separated from the next with a semicolon
;”) on Windows:
FOO;BAR — Good! FOO; BAR — No good! FOO:BAR — No good!
(Unix, Linux, and Mac OS use a colon (“
as a separator instead.)
Download the development tools and install in this order:
This installer includes several sub-installers.
The first one is for the JDK.
Change the install location to “
and later you can let the public JRE install in
C:\Program Files (x86)\java\jre8”.
(Samples and demos are currently a separate zip download, and not installed
with the JDK installer.
However, samples and demos folders are deleted by the JDK
installer for some reason, so always install the JDK first,
then other stuff.)
When you use Java's automatic updater for Windows, third-party software may be included. The two additional packages delivered to users are currently the Ask Toolbar and the McAfee Security Scanner. With Java updates (and sometimes, an install), you must specifically opt out of the additional software installations. You may not want to use Ask.com, but apparently its installer delays its actions for 10 minutes or so. So if you accidentally install it, you won't see the uninstall option show up in the control panel right away.
The first screen-shots below are for JDK 8, but it should be similar for any JDK version. Note the public JRE is left to install in its default location. (Since the installer will adjust PATH for it, there's no reason to change the default anymore.)
(Note the non-standard location, without version number details.)
Install JDK on Mac OS X
For Mac OS X, there may be a better/simpler way to install the JDK then the Java.com directions for installing Java on OS X. This is because Apple no longer includes Java support, and the Oracle installer doesn't do all the setup required. You can find help by searching the Internet; there are dozens of pages showing how-to setup Java on a Mac. While untried by me, the simplest way may be this:
brewcommand to install things.
brewto know about the repositories for Java, run these commands from a terminal window:
brew tap caskroom/cask brew install brew-cask
brew cask install java”.
After the installer finishes, you should launch the Java Control Panel
and examine the settings.
(On Linux, the command to launch the OpenJDK control panel is
I generally turn off automatic JRE updates.
localhost to the exception site list.
This is a list of sites from which you will allow downloaded unsigned or
self-signed code (Applets or Web Start apps) to run.
You should add a couple of entries to enable running code from your local
computer, and also from
wpollock.com if you want to enable
the demos from that website:
http://localhost/ http://127.0.0.1/ https://localhost/ https://127.0.0.1/ file:/// https://wpollock.com/
file:/// entry is needed unless you're
running a server such as a web server, Tomcat, Glassfish, etc., and plan
on serving up Java applets and/or WebStart applications.
In that case, you may need to specify a non-standard port number.
For example, by default the Glassfish server uses port 8080, so you need
to add “
Note that IPv6 isn't currently supported by this exception list;
also the JRE doesn't resolve name to IP addresses,
so you need both the host name as well has the IP addresses
Also note you will get a warning with
Since you are using localhost, it doesn't matter so you should ignore those
It could be unsafe to use http:// for unsigned applets.
Finally, if you're having trouble with MyHCC, be aware they use
Java for some of their tools, and their code may be self-signed.
(They are supposed to be fixing that.)
On the “Advanced” tab, I enable all debugging options, hide the Java console, disable mixed-code verification, enable SSL 3.0 and TLS1.1 and 1.2 (should be the default on new versions), and check the box to make the Java icon appear in the system tray (so I can click on it to show the console).
Finally, you can copy some Jar files into the
from the JRE
/lib folder, although it
is easier to list them on
CLASSPATH as shown.
(Indeed, you can list any Jars on
CLASSPATH instead of copying
them; this works best when you install in locations without version numbers.)
If you copy Jars, keep in mind you will need to update them when you update
the originals, such as installing a new JDK or Glassfish version.
Download the Apache Derby DB, latest official release zip. URL: db.apache.org/derby/derby_downloads.html. Note, the JDK includes this (renamed to “Java DB”), and will install it in
You only need to do this step if you want the latest version of
Derby, replacing the version that came with the JDK.
Make sure you set the
environment variable appropriately if you don't install to
The Apache Derby zip download includes samples and documentation not included
with the Java DB bundled with the JDK.
You can download the zip and extract just those extra folders, into
(Note, there is a pair of Eclipse plug-ins available from the Apache Derby
site, if you want them.
Download those, and extract the zip files into the
C:\Program Files (x86)\eclipse\plugins\ folder,
after installing Eclipse.)
The database Jar files (there are several) need to be put on
CLASSPATH, or copied (or linked) into
This was done already, when you set
C:\Java, and rename the new folder to just “
ant” (that matches the environment variable settings created earlier).
C:\Java, and rename the new folder to just “
maven” (that matches the environment variable settings created earlier).
Install Maven on Mac OS X
There are several ways do to this. One is to follow the standard install directions for a Linux-like system, found on the Maven website. But the simplest way seems to be this:
brewcommand to install things.
brew install maven.
treecommand, you can install that using the command
brew install tree.
junit.jar”. You need to download the “jar” and the “javadoc.jar” for the latest version of JUnit 4 (currently, that is 4.12). In my browser, that required a right-click and opening the link in a new tab. Next, rename “
javadoc.jar” to “
javadoc.zip”. Now you can extract the contents to a new folder; I used “
C:\Java\JUnit-API”. You can then set a bookmark (or favorite, depending on your browser of choice) to the
index.htmlfile in there, for quick reference. The downloaded “
junit-version.jar” jar file should be put into
You can optionally repeat these steps for the
hamcrest-core.jar” file and its
(Hamcrest is an extension to JUnit 4.
I suggest extracting the documentation into
You can also bookmark the online JUnit documentation, from https://github.com/junit-team/junit/wiki and http://junit.sourceforge.net/doc. (This includes the JUnit Cookbook, and the combined JUnit and Hamcrest Java Docs (API). Note the API documentation found here may not be as current as the versions you downloaded.)
Glassfish Java EE server, the latest open source,
multilingual, full platform version.
There are multiple versions, some from Oracle.
I installed the free, open source version from Oracle, which is
named the “Java EE SDK”.
(Don't download any of the bundles.)
Download the Windows installer from
(Or you can download the FLOSS version directly (as a ZIP archive) from
Install it as
the default is
The version I downloaded (from Oracle) lacks JAXB Jar files;
these are referenced by the Glassfish
To fix, I downloaded the latest version of JAXB from
and unzipped the folder into
Then I copied the
Doing this stopped the “bad path” warning messages when running
the command “
Next time, I'll try the FLOSS download instead and see if it works better.
Update: It didn't work any better; still had to copy those JAXB jars over!)
Run the installer, and choose “typical install”.
Select the location to install to
Make sure you choose to install the “update tool” on the
(If you don't see that option — some versions won't have it —
you can later run the
updatetool.bat script from the
...\bin folder to install it.)
Then, click the Install button to proceed.
When done, a single domain will be created.
(You don't need more than one.)
This uses the user name “
admin”, with no password
You can add a password for better security (and not
admin” or something equally easy to guess).
At HCC, no password was set.
Download the Java EE API 7 Jar file
Click on the latest version (for example, “7.0”).
Near the top of the page is a link to the repository with the file,
in this case probably “central”.
Click on that, then download the
Copy it into
(This is needed only to compile Java EE code with
IDEs download the correct client Jars when you create an
appropriate Java EE project, as will Maven.)
(Optional: You can download the Java EE API
docs as well from that same site, the file
Once the docs are downloaded, you can change the extension from
zip, extract the Java docs in a folder someplace such as
C:\Java\JavaEE-api”, and set a bookmark for
C:\Java\eclipselink). (If you install elsewhere, remember to change the
ECLIPSELINK_HOMEenvironment variable.) Complete the EclipseLink setup by copying the
If you install both Cygwin and Git for Windows, both Git tools may end up
You will probably need to adjust the
PATH so all systems use
Cygwin's Git tool also may cause problems with file endings, due to the
If that happens, either adjust
PATH to use the other
or change the
core.autocrlf setting for Cygwin's
true and see if that solves the problem.
java -version javac -version ant -version mvn -version ij NUL sysinfo java org.junit.runner.JUnitCore
(Run the following only if you installed Glassfish already:)
updatetool --version echo exit |asadmin
You should not see any error messages.
The JUnit test should show 3-5 lines, starting with the
version, and ending with “
OK (0 tests)”
(or some other number, depending on the version).
updatetool command will pop-up a GUI
window showing a version.
asadmin command line should show something similar to
“Use "exit" to exit and "help" for online help.
Command multimode executed successfully.”
You may get a message from your firewall software when running some of these tools and servers. (Microsoft firewall may block some out-going connections.) So you may need to enable Glassfish (and JRE) network connections.
If you do get any errors, run the command “
(or use the Rapid Environment Editor tool)
and check the values of the environment variables very carefully!
On older versions of Windows, you may have to reboot after changing any
environment variables, and not just open a fresh command line window,
to have the changes take effect.
eclipse”. Extract it to “
C:\Program Files”. For convenience, you can make a short-cut to the
eclipse.exefile within the newly installed folder, and put it on your desktop, quick-launch bar, or the Start menu.
The Windows built-in zip support has a known problem with certain types of archives, such as very deep ones. This results in a failure to completely extract the contents, without any indication of failure. (The symptom is the following error dialog when trying to launch Eclipse: “The Eclipse executable launcher was unable to locate its companion shared library.”) The fix is to delete the damaged eclipse folder, and extract again using another tool such as WinZip, 7zip, or unzip.
(Note, Eclipse may install a duplicate version of some utilities such as Ant and Glassfish. If you don't install the extra versions, the default project settings will be incorrect. To use your already downloaded versions of Glassfish, ant, JUnit, etc., you must change the Eclipse defaults to use the Glassfish server (and/or other items) you installed separately. For me, it was easier to waste the disk space and just install the extra copies of the tools. Keep in mind that the versions of these tools may drift apart if you update one and Eclipse updates the other at different times.)
Tip: Eclipse can be installed on a Flash drive instead. That way, you can carry around your development environment where ever you go. (Make sure to also put your Eclipse “workspace” on the same Flash drive; see below for details on that.)
Run Eclipse to make sure it works.
Make sure it can find your JDK (it
will if you set the environment variables correctly).
When you first launch Eclipse, it will ask where to create a workspace,
which is a folder that holds all your Eclipse Java projects.
I usually put that in my Java programs folder (see step 2 above),
or in “My Documents”, and name the new folder
I then check the box to use that as the default and never ask me again.
Under the “Help” menu, run the “check for
You can also explore what add-ons (plugins) are available by
clicking on the “Help→Install new Software...”,
and install a few if you wish.
First, select “
--All Available Sites--” from
the drop-down list at the top.
Then check the boxes at the bottom to show only the latest versions,
to contact all update sites during install, and to hide items already
In particular, you should make sure the Git client is installed,
from the “Collaboration” list:
In Eclipse, you want the EGit add-on; the JGit add-on is a library that you can use in your Java programs to have them work with Git repositories. JGit is actually used by EGit internally, and it will probably be installed as a dependency (depends on which version you use). (In modern Eclipse versions, Git is likely installed by default.)
If you get tired of having to right-click your project and choose Team to do anything, you should customize perspective, by enabling the Git command group, then adding the Git menu and/or the Git toolbar. You can also go to “Windows→Show View→Other...” to add the Git Repositories view (I also like the Git Staging view, if your screen size is large enough).
Try creating and running a “Hello, World” application, following the Eclipse docs for that.
When done with the basic install (and you've read the basic Eclipse user manual!), you can “Install New Software...” to add some of Eclipse's optional features. When done with that, explore the Eclipse Marketplace to find and install some very useful add-ons. For example, I installed EclEmma code coverage tool, FindBugs, and others. (You find both of these commands under the Help menu.) Do not go overboard and install too much; you can always install more later.
(As with Eclipse, if you don't install the bundled copies of Glassfish and other tools, NetBeans won't know about your previously installed versions of those tools, until you update the defaults. Once again, it was easier to waste disk space and install the tools again.)
When done, launch NetBeans and run the menu item “Help→Check for Updates”. After installing updates (and restarting NetBeans), you may need to update or install additional plugins. To update or install plugins, use the “tools→Plugins” menu. Make sure you install at least Git, if not installed by default (depends on the version of NetBeans you install).
NetBeans now installs Git and some other versioning system clients by default, so they don't show as plugins. Currently, it doesn't install CVS by default, so you will need that plugin if you plan on using that.
Try creating and running a “Hello, World” application.
updatetool.exe” tool (launch from the command line), and install all available updates. You can also install additional add-ons if you wish.
Then test out Glassfish, by starting the default domain:
This shouldn't show any error messages, except if Glassfish is already
running when you use “
that would be fine.
Finally, open a web browser to the URL
Explore the server a bit.
Notice you can run the updatetool from there.
Click the link to go to the “Admin Console”, and
See if you can figure out how to download and install sample applications
When done, you can shut down the Glassfish server with:
To make development and testing more convenient, you can do some or all of these additional steps:
C:\Temp”. At home, I use “
C:\%HOMEPATH%\Java”. (On Windows 7, that becomes “
cmd.exe) short-cut you can find in the Start menu. Rename the copy to something like “
Java CLI”. Edit the properties of the new short-cut, to start in your Java folder (see the previous step). You can also change the font and layout (number of rows and columns). It is also handy to enable “Quick Edit Mode”. This short-cut can be placed on the desktop, in the Start menu, or “pinned” to the taskbar. (I put it in both the Start menu and taskbar.)
eclipse.exe, and choose copy. Then, you can “paste shortcut” in your Start menu, desktop, or the taskbar. (NetBeans installs a desktop short-cut and a Start menu item, but you can still pin that to the taskbar if you wish.)
Notepad.exeis usually found in
C:\Windows. Right click it, copy, then open the “SendTo” folder, and paste as a short-cut.)
If not using an IDE, a better editor than Notepad (in my opinion) is the free “Notepad++”. (URL: http://notepad-plus-plus.org/download/.)
asadmin start-domain”. If you don't want to be running this always, you can make it more convenient to start and stop using a short-cut. You can make a pair of BAT files, one to start and one to stop glassfish. A good place for them might be “
%GLASSFISH_HOME%\bin”, but if you do place them there and later update or reinstall Glassfish, they may be gone! Personally, I created a new folder called “
C:\program Files (x86)\Utils”, and listed folder that on
PATH. Then I put any BAT files or other DOS software I download in there. You can also add a short-cut to them from the Start menu, desktop, or taskbar.
Java 8 API (http://download.oracle.com/javase/8/docs/api/)
Java 8 SE docs (http://docs.oracle.com/javase/8/docs/)
Junit API (http://junit.sourceforge.net/javadoc/)
Java EE API (http://docs.oracle.com/javaee/7/api/)
Your First Cup: An Introduction to the Java EE Platform ( http://docs.oracle.com/javaee/7/firstcup/doc/) also installed locally
Java EE tutorial (http://docs.oracle.com/javaee/7/tutorial/doc/home.htm) also installed locally
Glassfish HTTP application server (http://localhost:8080/)
Glassfish HTTPS application server (https://localhost:8181/)
Glassfish Administration console (http://localhost:4848/)
Other bookmarks can be useful too, such as the one for the (older but useful)
JUnit Cookbook, and documentation links for
Documentation often includes tutorials, quick-start guides,
FAQs, and reference material.
Find and bookmark any you find useful.
(You can also download zip archives of the Java API docs for
Java SE, JNLP (WebStart), JUnit,
Then you can bookmark the local copies for use when you aren't connected
to the Internet.
This can be useful to save data charges or when you have intermittent
Don't forget to bookmark the locally installed JavaFx docs
and all the demos and samples as well.
Explore the folders in
JAVA_HOME to see what's available.)
(Note! Most web browsers no longer support plug-ins such as Java, and Java applets are considered obsolete.)
...\jre...\bin\javaws.exe, and add a short-cut from it to the Start menu. (You can name the short-cut “Java WebStart”.) Modify the short-cut properties by adding “
-viewer” to the end of the command line (“Target”).
That command launches the Java control panel's application (WebStart) cache.