Other Help Topics :: Java binary locator



This is just my opinion:
using find in / is not a good idea, since that will go through every possible directory (including attached media).  At the very least, start in /opt (and/or /usr).

Also, what if there is more than one instance of /bin/java ?  Then there'd be multiple entries.

I'd suggest something like...
Code Sample
for eachdir in `ls -d /opt/java* 2>/dev/null`; do
 for TEMP in `find "$eachdir" 2>/dev/null | grep -re "/bin/java$" `; do
   if [ -x "$TEMP" ]; then
     JAVAEXEC="$TEMP"
     break 2;
   fi
 done
done


Also, why would you need to check if it is a symlink instead?

Quote (^thehatsrule^ @ Oct. 18 2006,18:33)
This is just my opinion:
using find in / is not a good idea, since that will go through every possible directory (including attached media).  At the very least, start in /opt (and/or /usr).

Also, what if there is more than one instance of /bin/java ?  Then there'd be multiple entries.

I'd suggest something like...
Code Sample
for eachdir in `ls -d /opt/java* 2>/dev/null`; do
 for TEMP in `find "$eachdir" 2>/dev/null | grep -re "/bin/java$" `; do
   if [ -x "$TEMP" ]; then
     JAVAEXEC="$TEMP"
     break 2;
   fi
 done
done


Also, why would you need to check if it is a symlink instead?

I tought that find /* thing too. And it fastens process much by skipping /mnt.

And if there's more tha one java binary file I have to make script ask for which to use.

Looking for symlink is because if Java has been installed by some other way (to an onther directory)  and if that install has created that symlink there as to act like normal install.

It's kinda wasteful to find anywhere other than /opt, in my opinion.  If Java has been installed via source or debian/rpm package, it will almost 100% definitely without doubt be in PATH, probably for sure.  If not, the user already knows enough about the system to not need a failsafe script, or else he's already got bigger problems to deal with.
The only place where finding it would be necessary is for tar.gz or uci myDSL extensions, and since you already know where those install, you can narrow your search dramatically.

I think you're making this project much more complicated than it needs to be. How many variations of Java can there possibly be, especially for DSL? The DSL user either 1) knows enough to be able to easily deal with PATH issues, or 2) isn't going to install Java by any method other than MyDSL or Deb.  Maybe I'm overlooking custom installers in an official release (like Firefox does)?  I don't know if that applies to Java.

I just want to make few things more simple. =) That's all.

original here.