* Download JRuby 1.20. (zip file) * Extract the zip into C:\JRuby120 * Edit sytem 'environment variables': * Add JRUBY_HOME -> point it to C:\JRuby120 * Modify the PATH environment variable to point to C:\JRuby120\bin;
After all this, I open up cmd.exe and type jruby
->’The system cannot find the path specified’
What did I do wrong?
I removed echo_off from C:\JRuby120\bin\jruby.bat, C:\JRuby120\bin_jrubyvars.bat and C:\JRuby120\bin_jrubyvmopts.bat and invoked jruby from cmd.exe. This was the output:
C:\>rem --------------------------------------------------------------------------- C:\>rem jruby.bat - Start Script for the JRuby Interpreter C:\>rem C:\>rem for info on environment variables, see internal batch script _jrubyvars.bat C:\>setlocal C:\>rem Sometimes, when jruby.bat is being invoked from another BAT file, C:\>rem C:\JRuby120\bin\ is incorrect and points to the current dir, not to JRuby's bin dir, C:\>rem so we look on the PATH in such cases. C:\>IF EXIST 'C:\JRuby120\bin\_jrubyvars.bat' (set FULL_PATH=C:\JRuby120\bin\ ) ELSE (set FULL_PATH=C:\JRuby120\bin\ ) C:\>call 'C:\JRuby120\bin\_jrubyvars.bat' C:\>rem Environment Variable Prequisites: C:\>rem C:\>rem JRUBY_OPTS (Optional) Default JRuby command line args. C:\>rem C:\>rem JAVA_HOME Must point at your Java Development Kit installation. C:\>rem C:\>rem ----- Save Environment Variables That May Change -------------------------- C:\>set _CLASSPATH=.; C:\>set _CP= C:\>set _JRUBY_CP= C:\>set JRUBY_BAT_ERROR=0 C:\>rem ----- Verify and Set Required Environment Variables ----------------------- C:\>if not 'C:\Program Files\Java\jdk1.6.0_11\bin' == '' goto gotJava C:\>set JRUBY_HOME=C:\JRuby120\bin\.. C:\>rem ----- Prepare Appropriate Java Execution Commands ------------------------- C:\>if not '' == '' goto gotCommand C:\>set _JAVA_COMMAND= C:\>set JAVA_COMMAND=java C:\>if not 'Windows_NT' == 'Windows_NT' goto noTitle C:\>rem set _STARTJAVA=start 'JRuby' 'C:\Program Files\Java\jdk1.6.0_11\bin\bin\java' C:\>set _STARTJAVA=C:\Program Files\Java\jdk1.6.0_11\bin\bin\java C:\>goto gotTitle C:\>rem ----- Set up the VM options C:\>call 'C:\JRuby120\bin\_jrubyvmopts' C:\>set _MEM=-Xmx500m C:\>if not defined JAVA_MEM goto memOptDone C:\>set _STK=-Xss1024k C:\>if not defined JAVA_STACK goto stackOptDone C:\>set _VM_OPTS= C:\>set _RUBY_OPTS= C:\>set _DFLT_VM_OPTS= C:\>set _JAVA_VM=-client C:\>set SAFE_JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11\bin C:\>set SAFE_JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11\bin C:\>rem C:\>rem Can you believe I'm rewriting batch arg processing in batch files because batch C:\>rem file arg processing sucks so bad? Can you believe this is even possible? C:\>rem http://support.microsoft.com/kb/71247 C:\>rem Escape any quotes. Use _S for ', _D for ', and _U to escape _ itself. C:\>rem We have to escape _ itself, otherwise file names with _S and _D C:\>rem will be converted to to wrong ones, when we un-escape. See JRUBY-2821. C:\>set _ARGS= C:\>if not defined _ARGS goto vmoptsDone C:\>set _VM_OPTS= -client -Xmx500m -Xss1024k C:\>set _DFLT_VM_OPTS= C:\>set _MEM= C:\>set _STK= C:\>set _ARGS= C:\>set _VAL= C:\>set _CMP= C:\>set _CMP1= C:\>set _JAVA_VM= C:\>set _RUNJAVA='C:\Program Files\Java\jdk1.6.0_11\bin\bin\java' C:\>rem ----- Set Up The Boot Classpath ---------------------------------------- C:\>for %i in ('C:\JRuby120\bin\..\lib\jruby*.jar') do @call :setjrubycp %i C:\>if not '' == '' goto addjrubycp C:\>set JRUBY_CP=C:\JRuby120\bin\..\lib\jruby.jar C:\>goto :EOF C:\>for %i in ('C:\JRuby120\bin\..\lib\bsf*.jar') do @call :setjrubycp %i C:\>if not 'C:\JRuby120\bin\..\lib\jruby.jar' == '' goto addjrubycp C:\>set JRUBY_CP=C:\JRuby120\bin\..\lib\jruby.jar;C:\JRuby120\bin\..\lib\bsf.jar C:\>goto :EOF C:\>rem ----- Set Up The System Classpath ---------------------------------------- C:\>for %i in ('C:\JRuby120\bin\..\lib\*.jar') do @call :setcp %i C:\>if not '' == '' goto add C:\>set CP=C:\JRuby120\bin\..\lib\bsf.jar C:\>goto :EOF C:\>if not 'C:\JRuby120\bin\..\lib\bsf.jar' == '' goto add C:\>set CP=C:\JRuby120\bin\..\lib\bsf.jar;C:\JRuby120\bin\..\lib\jruby.jar C:\>goto :EOF C:\>if not 'C:\JRuby120\bin\..\lib\bsf.jar;C:\JRuby120\bin\..\lib\jruby.jar' == '' goto add C:\>set CP=C:\JRuby120\bin\..\lib\bsf.jar;C:\JRuby120\bin\..\lib\jruby.jar;C:\JRuby120\bin\..\lib\profile.jar C:\>goto :EOF C:\>goto :EOF C:\>if 0 == 0 'C:\Program Files\Java\jdk1.6.0_11\bin\bin\java' -client -Xmx500m -Xss1024k -Xbootclasspath/a:'C:\JRuby120\bin\..\lib\jruby.jar;C:\JRuby120\bin\..\lib\bsf.jar' -classpath 'C:\JRuby120\bin\..\lib\bsf.jar;C:\JRuby120\bin\..\lib\jruby.jar;C:\JRuby120\bin\..\lib\profile.jar;.;' -Djruby.home='C:\JRuby120\bin\..' -Djruby.lib='C:\JRuby120\bin\..\lib' -Djruby.shell='cmd.exe' -Djruby.script=jruby.bat org.jruby.Main C:\>set E=3 C:\>call 'C:\JRuby120\bin\_jrubycleanup'
Well, that’s what you’re supposed to do. Go to the command line and enter
echo %PATH%and make sure your jruby bin directory is on there.EDIT:
Ignore the above, that’s not the error you’d get for jruby not being in the path. The ‘The system cannot find the path specified’ error is because a path doesn’t exist, most likely it’s the path to your Java JDK. Run
echo %JAVA_HOME%. Make sure that path is correct. If you don’t have the Java JDK, you can download it here.EDIT 2:
Having seen the output of jruby.bat, the problem appears to either be in finding
_jrubyvars.bat, or finding something called within it. The only thing it calls is_jrubyvmopts.bat, which doesn’t call anything else. Make sure thatC:\JRuby120\bin\_jrubyvars.batandC:\JRuby120\bin\_jrubyvmopts.batexist, although I can’t see a reason why they shouldn’t. If they both exist, then the next step would be to remove the@echo offlines from each of them and see if we can find exactly where the bad call is taking place.EDIT 3:
Having seen all that output, it looks like
JAVA_HOMEis set to ‘C:\Program Files\Java\jdk1.6.0_11\bin\‘JAVA_HOMEshould be the parent directory:C:\Program Files\Java\jdk1.6.0_11\‘. Give that a try and cross your fingers this time.