I am reviewing a number of different java programs and am trying to work out how I can update the reference to the program name once only instead of twice. Is there a way t
Sometimes the simplest approach is best. It sounds like you have a bunch of programs to compile and run. I would suggest you put those names into a text file, like this:
Main
Foo
Bar
and then use some search and replace in the editor to make the text like this:
javac Main.java && java Main
javac Foo.java && java Foo
javac Bar.java && java Bar
|Then just select the lines to run and paste them into the terminal.
Of course, it depends on your expected workflow, but sometimes the simplest is the best.
You can do it with one line like this:
PC=com/mycompany/Main && CN=$(echo $PC | tr / .) && javac $PC.java && java $CN
This will work even if you have a package name as it will automatically replace /
with .
to build properly the full qualified name of your class. In the example above it will compile the class com/mycompany/Main.java
then launch com.mycompany.Main
PC: Refers to the relative path of your class without .java
, this what you will need to change
CN: Refers to the full qualified name of your class automatically built from the previous path
You could set it as an environment variable. Something like,
export CLS=Main # Change Main once
javac $CLS.java && java $CLS # Will use "Main"