LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   Creating a shell script to run Java program (http://www.linuxquestions.org/questions/programming-9/creating-a-shell-script-to-run-java-program-253625/)

paultaylor 11-11-2004 09:52 AM

Creating a shell script to run Java program
 
Hi Ive just moved over to Linux from Windows and I am trying to convert a Windows batch file to a unix shell script to run a java application, but it so long since Ive used UNIX I cant really remember how to do it.

My script contains


#!/bin/sh
java -jar lib/testapp.jar



These are my failed attempts to run it, not too sure what the differences are but I think the 3rd one is the only one to actually find my shell script.


[root@]# testapp.sh
-bash: testapp.sh: command not found
[root@]# ./ testapp.sh
: bad interpreter: No such file or directory
[root@]# . testapp.sh
Unable to access jarfile lib/testapp.jar



if I just do this at the command line it works fine


[root@]#java -jar lib/testapp.jar

Mega Man X 11-11-2004 10:49 AM

I usually use a little work around for java like this:

1 - Create a little file
touch littleapp

2 - Insert something into the app to be executable
echo "java -jar lib/testapp.jar" >> littleapp

3 - Make it executable
chmod +x littleapp

4 - Move it to /usr/bin or /sbin to be able to run it from a shell
mv littleapp /usr/bin

I know this is not the way you wanna do it, but it's another way of doing it that I wanted to let you know. I so need to learn shell scripts :(.

Good luck!

paultaylor 11-12-2004 05:11 AM

No its still not working. ive just simplified it to run java -version, but still it wont work in shell script

[root@cpc1]# cat testapp
/opt/jdk1.5.0/bin/java -version
[root@cpc1]# testapp
Unrecognized option: -version
Could not create the Java virtual machine.
[root@cpc1]# /opt/jdk1.5.0/bin/java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode)

jlliagre 11-12-2004 06:31 AM

Your editor is probably adding garbage (i.e. CR) at end of lines.
What gives "od -c testapp" ?

bigearsbilly 11-12-2004 07:12 AM

do you actually *have* /bin/sh installed?

try changing it to:
Code:

#!/bin/bash
remember it must be right at the first line first column.


billy

jlliagre 11-12-2004 08:24 AM

Quote:

do you actually *have* /bin/sh installed?
That wouldn't explain the "Unrecognized option: -version" problem.

paultaylor 11-12-2004 09:11 AM

Thankyou, od -c has cracked the problem i have \r at the end.
I recreated the file from scratch and it is now runs ok (im suprised it causes such a problem though)

As for bin/sh the file does exist but is actually a symbolic link to /bin/bash the script seems to run ok without the line at all. So is there any reason to have this line

jlliagre 11-12-2004 03:11 PM

You shouldn't be surprised, the end of line character (\n) under unix is the single line-feed character, and not the double carriage-return/line-feed like DOS/Windows.
Moreover, CR (\r) is a valid filename character for most unix supported file-systems, so it isn't forbidden, although not a smart idea, to have one interpreter named /bin/sh and another one named /bin/sh\r , and the #! construction should be able to distinguish between them.

About the bash question, it is probably a good idea to leave /bin/sh instead of /bin/bash, as it makes your script more portable, unless you use bash specifics unsupported on the real bourne shell.


All times are GMT -5. The time now is 08:10 AM.