FAQs
Howto Guides
How to setup a basic Struts project using Eclipse IDELegal Disclamer* DISCLAIMER - This simple How-To shows you one of many ways to setup a working project using
the Struts framework. This is mainly geared toward struts users who are new to Eclipse, and
don't want to spend a lot of time figuring out the differences between their old IDE (if any)
and this one.
I will also apologize ahead of time for the formatting of this page.
In this How-To, I will demonstrate (using Eclipse 2.0.1) how to setup, compile, run,
and debug the struts-example web application that is bundled with the distribution.
Next, I will modify the code to pull some data from a MySql database using the popular
relational mapping tool OJB. (This is actually quite simple)
Let's get startedBefore we begin, you will need to create a directory somewhere to store your project.
I typically use C:\personal\development\Projects\(some project)
Once that's done, extract the struts-example.war to that directory
(using your favorite zip utility)
Delete the META-INF folder because this will be created during the build/jar/war process.
Add a build.xml file to the project root. I use something like this:
<project name="Struts Example" default="main" basedir=".">
<!-- This is a basic build script, only the minimums here -->
<!-- Tell ant to use my environment variables -->
<property environment="env"/>
<property file="./build.properties"/>
<!--
This build script assumes Tomcat 5 is the servlet container.
Modify as necessary if a different container is being used.
-->
<property name="tomcat.home" value="${env.CATALINA_HOME}"/>
<property name="servlet.jar" value="${tomcat.home}/common/lib/servlet-api.jar"/>
<property name="jsp.jar" value="${tomcat.home}/common/lib/jsp-api.jar"/>
<property name="deploy.dir" value="${tomcat.home}/webapps"/>
<property name="build.compiler" value="modern"/>
<property name="build.dir" value="./WEB-INF/classes" />
<property name="src.dir" value="./WEB-INF/src"/>
<property name="war.file" value="struts-example"/>
<property name="war.file.name" value="${war.file}.war"/>
<path id="project.class.path">
<fileset dir="./WEB-INF/lib/">
<include name="**/*.jar"/>
</fileset>
<pathelement path="${src.dir}"/>
<pathelement path="${servlet.jar}"/>
<pathelement path="${jsp.jar}"/>
</path>
<target name="clean">
<delete dir="${build.dir}" includeEmptyDirs="true" />
</target>
<target name="prep">
<mkdir dir="${build.dir}"/>
</target>
<target name="compile">
<javac srcdir="${src.dir}"
destdir="${build.dir}"
debug="on"
deprecation="on">
<include name="**/*.java"/>
<classpath refid="project.class.path"/>
</javac>
</target>
<target name="cleanWebApp">
<delete file="${deploy.dir}/${war.file.name}" />
<delete dir="${deploy.dir}/${war.file}" includeEmptyDirs="true" />
</target>
<target name="war">
<war warfile="${war.file.name}" webxml="./WEB-INF/web.xml">
<fileset dir="./" includes="**/*.*" excludes="*.war, **/*.nbattrs, web.xml, **/WEB-INF/**/*.*, **/project-files/**/*.*"/>
<webinf dir="./WEB-INF" includes="**/*" excludes="web.xml, **/*.jar, **/*.class"/>
<lib dir="./WEB-INF/lib"/>
<classes dir="${build.dir}"/>
<classes dir="${src.dir}">
<include name="**/*.properties"/>
</classes>
</war>
</target>
<target name="deploy">
<copy todir="${deploy.dir}">
<fileset dir="./" includes="${war.file.name}"/>
</copy>
</target>
<target name="main" depends="clean, prep, cleanWebApp, compile, war"/>
</project>
Create a new project.
![](/images/load.gif)
New Java Project
![](/images/load.gif)
Browse for the folder you created for your project.
![](/images/load.gif)
![](/images/load.gif)
Eclipse will detect your source folders from any subdirectories under your project.
![](/images/load.gif)
In our case, this is where the src folder was placed.
![](/images/load.gif)
Default standard libs are automatically added depending on the type of project.
![](/images/load.gif)
Add the existing web app jars.
![](/images/load.gif)
Now we need to add a few jars from the file system.
![](/images/load.gif)
We always need this one (servlet.jar)
![](/images/load.gif)
Ahhhh...everything looks ok for now. You can always go back and modify these settings
later.
![](/images/load.gif)
![](/images/load.gif)
When everything settles down, you should see something like this (of course, it might look different depending on your installation/customization):
![](/images/load.gif)
Compilation warnings and errors are detected immediately. In this screenshot, I drill down
into the source folder, package, file, class, and double click on the method....which
brings up the source editor. I hover the mouse over the offending warning to see
a description of what's wrong.
![](/images/load.gif)
I changed ApplicationConfig to ModuleConfig, then saved and now I see new errors.
You can right click and import ModuleConfig right from the error.
![](/images/load.gif)
A quick look at the import section.
![](/images/load.gif)
Right click, Source, Organize Imports
![](/images/load.gif)
Ahhhh...better
![](/images/load.gif)
From the Package Explorer, right click your build.xml and run Ant:
![](/images/load.gif)
Is this cool or what?
![](/images/load.gif)
Uh Oh!
![](/images/load.gif)
Quick look at what jars are being used to process my build.
![](/images/load.gif)
![](/images/load.gif)
I simply removed all the existing jars from the IDE's Ant configuration and
added all from my own installation.
![](/images/load.gif)
Can't forget that last one
![](/images/load.gif)
Everything went ok (for me)
![](/images/load.gif)
![](/images/load.gif)
![](/images/load.gif)
Time to test-drive
![](/images/load.gif)
![](/images/load.gif)