README for Apache Harmony class library - snapshot build


  http://incubator.apache.org/harmony


NOTE
====

This is a snapshot distribution of the Apache Harmony project.

Apache Harmony is an effort undergoing incubation at the Apache
Software Foundation (ASF). Incubation is required of all newly
accepted projects until a further review indicates that the
infrastructure, communications, and decision making process have
stabilized in a manner consistent with other successful ASF
projects. While incubation status is not necessarily a reflection
of the completeness or stability of the code, it does indicate
that the project has yet to be fully endorsed by the ASF. 


BUILD NOTES
===========

This snapshot is built from the Apache Harmony source repository.

Instructions for building from source are available on-line at:

  http://incubator.apache.org/harmony/documentation/build_classlib.html

The revision number of the code contained in this snapshot can be
determined from the snapshot file name, which is in the form:
	harmony-classlib-r<rev>-<platform>-snapshot.[zip|tgz]

To recreate this snapshot from source you should build the code,
following the instructions above, with the Subversion revision
identifier <rev> in place of HEAD.


RUNTIME REQUIREMENTS
====================

The class library code requires a compatible JVM to run.  Details
of where to obtain a compatible JVM can be found on-line at:

  http://incubator.apache.org/harmony/documentation/build_classlib.html

in the section titled "Obtaining a compatible VM".


FEEDBACK
========

Please send any feedback on the snapshot to
	harmony-dev@incubator.apache.org



Your Harmony classlib team
