Issue with spaces in Java command line options


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Issue with spaces in Java command line options
# 1  
Old 04-11-2011
Question Issue with spaces in Java command line options

Hi,

I am writing a shell script to build Java options dynamically in a variable array and pass them to java.exe. If an option value contains a space, I cannot find a way to get it interpreted correctly. Here is my example:
Code:
#!/bin/bash
JAVA_HOME=/opt/jvm/jre1.5.0_18
JAVA_OPTS=("-Xms256m -Xmx256m")
JAVA_OPTS=("${JAVA_OPTS[@]}" "-Dthis.is.a.test=\"A B C\"");
# ... and so on ...
echo ${JAVA_OPTS[@]}
$JAVA_HOME/bin/java ${JAVA_OPTS[@]} some.java.class

Although JAVA_OPTS echoes correctly as
Code:
-Xms512m -Xmx512m -Dthis.is.a.test="A B C"

Java does not consider the quotes and complains:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: B

I tried with and without escaping, with single and double quotes and a couple other fancy variations, without success. Any help is welcome.

Last edited by Franklin52; 04-12-2011 at 03:26 AM.. Reason: Please use code tags
# 2  
Old 04-12-2011
Quote:
Originally Posted by Romain
JAVA_OPTS=("-Xms256m -Xmx256m")
That's an array with one element, not two as you might have wanted.

Either of these will give two elements:
JAVA_OPTS=("-Xms256m" "-Xmx256m")
JAVA_OPTS=(-Xms256m -Xmx256m)

That seems like it could give Java heartburn, though it's not my language so I'm not sure.
# 3  
Old 04-12-2011
Code:
JAVA_HOME=/opt/jvm/jre1.5.0_18
JAVA_OPTS="-Xms256m -Xmx256m"
JAVA_OPTS="${JAVA_OPTS}" "-Dthis.is.a.test=\"A B C\"";

# 4  
Old 04-12-2011
Quote:
Originally Posted by rdcwayx
JAVA_OPTS="${JAVA_OPTS}" "-Dthis.is.a.test=\"A B C\"";
That's a problem. JAVA_OPTS will not change and bash will try to find and execute an executable by the name of -Dthis.is...

Though the basically, you're trying to put all the options into one string instead of into an array of strings. That's reasonable as long as no option has a space. Then it would be used like this, with NO QUOTES when used.
Code:
java $JAVA_OPTS some.java.class

# 5  
Old 04-12-2011
Thank you both for your replies. Actually I had tried a version with String variable instead of Array. The exact syntaxt for it should be:
Code:
#!/bin/bash
JAVA_HOME=/opt/jvm/jre1.5.0_18
JAVA_OPTS="-Xms512m -Xmx512m"
JAVA_OPTS="$JAVA_OPTS -Dthis.is.a.test=\"A B C\""
# ... and so on ...
echo ${JAVA_OPTS}
$JAVA_HOME/bin/java ${JAVA_OPTS} some.java.class

But this leads to the exact same result:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: B

The interpreter is not considering the " in "A B C".

Last edited by Romain; 04-12-2011 at 09:39 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Processing Multiple Arguments in Command Line Options

Hi All, I am new to scripting. Could you please assist me . Here is my requirement. I have written a script that has 2 option flags defined. -l) calls some function with the arguments passed in front of -l -r) calls second function with the arguments passed in front of -r *) calls the... (7 Replies)
Discussion started by: Jay Deshpande
7 Replies

2. Shell Programming and Scripting

Select command with variable options having spaces or null contents

Hi, I'm having an issue trying to produce a hierarchical directory menu that has either any directories listed in a specific directory as options or options with spaces in the option content or null content. So the menu function gets passed a base directory, it then lists any .sh scripts in... (6 Replies)
Discussion started by: andyatit
6 Replies

3. Shell Programming and Scripting

Reading command line options from bash script

I have the following code and I am calling it using ./raytrac.bash -u and getting problems. For some reason opt_usage is still 0. opt_usage=0 iarg=0 narg=$# while (($iarg < $narg)) do (( iarg = $iarg + 1 )) arg=$argv usrInputFlag=`echo $arg | awk '/=/ {print 1}; ! /=/... (22 Replies)
Discussion started by: kristinu
22 Replies

4. UNIX for Dummies Questions & Answers

Running set options from the command line and bash command

I'm reading about debugging aids in bash and have come across the set command. It says in my little book that an addition to typing set you can also use them "on the command line when running a script..." and it lists this in a small table: set -o option Command Line... (5 Replies)
Discussion started by: Straitsfan
5 Replies

5. Shell Programming and Scripting

awk script file command line options

Being new to awk I have a really basic question. It just has to be in the archives but it didn't bite me when I went looking for it. I've written an awk script, placed it in a file, added the "#!/usr/bin/awk -f" at the top of the script and away I go. "% myAwk <inputfile>" gives me exactly what... (2 Replies)
Discussion started by: tomr2k
2 Replies

6. Shell Programming and Scripting

Run perl script, with command-line options

Hello everyone, I have a perl script which takes various command line options from user like : test.pl -i <input_file> -o <output_file> -d <value> -c <value> Now I have multiple input files in a directory: <input_file_1> <input_file_2> <input_file_3> <input_file_4> ..... .... ...... (6 Replies)
Discussion started by: ad23
6 Replies

7. Shell Programming and Scripting

Using perl to get options from command line

Hi all, I want to get options from command line by perl. usage() options: -h Show this help message and exit -t Name of tester --timeout Set the timeout -l ... (1 Reply)
Discussion started by: Damon_Qu
1 Replies

8. Shell Programming and Scripting

how to? launch command with string of command line options

my description from another thread... here's my code: #!/bin/bash IFS=$'\n' function OutputName() { input=$1 echo $input input=`echo "$input" | sed -e 's/.//'` input=`echo "$input".avi` output_name=$input } if ]; then echo... (5 Replies)
Discussion started by: TinCanFury
5 Replies

9. Shell Programming and Scripting

Associated array from command line options

I am looking to populate an (associated) array with a command line argument. The command line would look something like this: alert -action test -priority '10' -module test_module . . . The associated array would look like this after the data is read in flag=(action=test priority=10... (1 Reply)
Discussion started by: jperret
1 Replies

10. Programming

Executing command line options

Can someone please tell me how to modify/add to this code so that it recognizes UNIX command options (all beginning with "-") and executes the command with options? #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv) { int i; system("stty -echo"); ... (8 Replies)
Discussion started by: Safia
8 Replies
Login or Register to Ask a Question