
Welcome to Apache OFBiz!

All you need to run OFBiz is a
1.6 (version 6) JDK (not just the JRE, the full JDK).
http://java.sun.com/javase/downloads/index.jsp

You can load the demo data (strongly advised) with the following command
on the command line: (being in the OFBiz directory)

linux/unix/osx:
./ant run-install

windows:
ant run-install

Once that is properly setup just run the executable jar file
that comes with OFBiz, which is ofbiz.jar. To do this on the
command line you would run:

java -Xms128M -Xmx512M -XX:MaxPermSize=128m -jar ofbiz.jar

or

linux/unix/osx:
./ant run

windows:
ant run

You will also find several platform dependent startup scripts in the "tools" folder
(for Windows and Unix-based operating systems, the startup scripts are startofbiz.bat
and startofbiz.sh).

Once OFBiz starts, you can look at the demo storefront at:
http://localhost:8080/ecommerce

and the administration interface at:
https://localhost:8443/webtools

You can log in with the user "admin" and password "ofbiz".

For more details about running a build, or for information on
getting, building, and running the source please see the
Apache OFBiz Setup Guide:

http://cwiki.apache.org/confluence/display/OFBADMIN/Demo+and+Test+Setup+Guide

Note that running with the default configuration uses an
embedded Java database (Apache Derby), and embedded application
server components such as Tomcat, Geronimo (transaction manager), etc.

To prepare OFBiz for production use the Basic Production Setup Guide
is a great place to start. It is available here:

http://cwiki.apache.org/confluence/display/OFBTECH/Apache+OFBiz+Technical+Production+Setup+Guide

Are you newbie for Apache OFBiz project? Are you confused how to start development? Please refer the beginner guide available at:

https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guide   

For additional resources please see the OFBiz web site.

Enjoy!

=========================================================================
==  BIS Crypto TSU exception notice                                    ==
=========================================================================
   This distribution includes cryptographic software.  The country in
   which you currently reside may have restrictions on the import,
   possession, use, and/or re-export to another country, of
   encryption software.  BEFORE using any encryption software, please
   check your country's laws, regulations and policies concerning the
   import, possession, or use, and re-export of encryption software, to
   see if this is permitted.  See <http://www.wassenaar.org/> for more
   information.

   The U.S. Government Department of Commerce, Bureau of Industry and
   Security (BIS), has classified this software as Export Commodity
   Control Number (ECCN) 5D002.C.1, which includes information security
   software using or performing cryptographic functions with asymmetric
   algorithms.  The form and manner of this Apache Software Foundation
   distribution makes it eligible for export under the License Exception
   ENC Technology Software Unrestricted (TSU) exception (see the BIS
   Export Administration Regulations, Section 740.13) for both object
   code and source code.

   The following provides more details on the included cryptographic
   software:

   * Various classes in OFBiz, including DesCrypt, HashCrypt, and
     BlowFishCrypt use libraries from the Sun Java JDK API including
     java.security.* and javax.crypto.* (the JCE, Java Cryptography
     Extensions API)
   * Other classes such as HttpClient and various related ones use
     the JSSE (Java Secure Sockets Extension) API
=========================================================================
