GIOP stub and tie generator source code generator for javax.rmi.*, omg.org.*

Copyright 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Please report bugs at http://www.gnu.org/software/classpath/bugs.html

Usage: grmic <options> <class names>

 where <options> includes:
  -poa              Generate the Servant based ties (default)
  -impl             Generate the obsoleted ObjectImpl based ties
                      (for backward compatibility)
  -nowarn            Show no warnings
  -nowrite           Do not write any files (check for errors only)
  -d <folder>        Place generated files into the given folder
  -classpath <path>  Specifies the path, where to find the classes being 
                     compiled  
  
  -help              Print this help text
  -v                 Print version
  -verbose           Verbose output
  -force             Try to generate code even if the input classes seem not
                     consistent with RMI specification. 
  
  
 and <class names> can include one or more non abstract classes that implement
 Remote and are accessible via current class path.

* This tool generates the source code that must be compiled with java compiler. 
* GRMIC is invoked from RMIC if the -iiop or -giop keys are specified.

