@echo off

REM
REM Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
REM
REM This code is free software; you can redistribute it and/or modify it
REM under the terms of the GNU General Public License version 2 only, as
REM published by the Free Software Foundation.
REM
REM This code is distributed in the hope that it will be useful, but WITHOUT
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
REM FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
REM version 2 for more details (a copy is included in the LICENSE file that
REM accompanied this code).
REM
REM You should have received a copy of the GNU General Public License version
REM 2 along with this work; if not, write to the Free Software Foundation,
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
REM
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
REM or visit www.oracle.com if you need additional information or have any
REM questions.
REM  
REM

@echo off

if "%1" == "-help" goto usage

:JAVA_HOME
if not exist %JAVA_HOME%\bin\rmiregistry goto BADJAVAHOME
if not exist %JAVA_HOME%\lib\sa-jdi.jar goto BADJAVAHOME

start %JAVA_HOME%\bin\rmiregistry -J-Xbootclasspath/p:%JAVA_HOME%\lib\sa-jdi.jar
goto end

:BADJAVAHOME
echo JAVA_HOME does not point to a working J2SE 1.5 installation.

:usage
@echo usage: start-rmiregistry
@echo  Start the rmi registry with with sa-jdi.jar on the bootclasspath
@echo  for use by the debug server.
@echo  JAVA_HOME must contain the pathname of a J2SE 1.5 installation.

:end

