Automating Compilation with jr

Problem

You get tired of typing javac and java commands.

Solution

Use my jr script.

Discussion

Although it may be tedious, there is some logic behind the fact that the compilation command (javac, jikes, etc.) requires you to include the filename extension, and the running command (java) requires you to omit the filename extension -- you can’t type java HelloWorld.class and have it run the HelloWorld program from the current directory. The compiler is actually reading a source file, while the java command is running a class, a class that might be located someplace in your CLASSPATH (see Section 2.6). It is common for JDK users to use a batch script or command file to automate this. Mine is called jr, for Java compile and Run. The Unix version is jr, a shell script:

javac $1.java && java $*

The $* gets expanded to include $1 and any other arguments. The MS-Windows version is jr.bat :

javac %1.java

if errorlevel 1 goto norun

java  %1   %2 %3 %4 %5 %6

:norun

For people using MS-Windows who have no experience using batch files for compilation, fear not. You could just copy this jr.bat file into the JDKHOME/bin directory. But the problem then is that when you deinstall that JDK version and install a new one, you’d lose jr. What I usually do on MS-Windows is this: just create a directory that won’t conflict with anything else, such as C:\bin (“bin” being an old name for binary programs; by tradition all of one’s own programs go there). Just add this to your PATH setting, either in your autoexec.bat file or in your Control Panel settings. Copy jr.bat into this directory, and you’re done! From then on you can just give commands such as jr HelloWorld. The script will run javac HelloWorld.java for you and, if there are no errors, it will run java HelloWorld.

Feel free to improve upon this and to call it whatever you like.

Get Java Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.