Welcome to Velocity!

This directory contains a few examples to help get you started.

As always, the if you have any questions :

1) Make sure you followed any directions :-) (did you build
   everything?)

2) Review documentation included in this package, or online at
   http://velocity.apache.org/

3) Ask on the velocity-user list.  This is a great source of support
   information.  To join, read http://velocity.apache.org/contact.html
   and then follow the links to join the lists.


app_example2 
------------

Another simple example showing how to use Velocity in a standalone
program.  This examples uses the org.apache.velocity.util.Velocity application utility
class, which provides a few convenient methods for application programmers. 

Please see the build instructions found in examples/README.txt

To run :

  ./example2.sh

or

  example2.bat

