Package: gij-3.4 Version: 3.4.3-9 Tags: patch The "java" wrapper script doesn't correctly handle command line options with arguments (e.g. -classpath and -jar) so it doesn't handle cases like this correctly:
java -classpath myjavaclasses -Djava.library.path=myjni Foo Once it sees "myjavaclasses", the script switches to just copying remaining arguments, so it the special handling for -Djava.library.path doesn't kick in. I've attached a patch to fix this. Cheers, Olly
--- /usr/bin/java 2004-12-18 23:40:26.000000000 +0000 +++ java 2005-02-22 15:20:11.135688449 +0000 @@ -28,12 +28,20 @@ # Build the command-line from the arguments given. my $parsingOptions = 1; + +# Flag used to copy argument to -classpath, -cp, -jar. +my $copyNext = 0; foreach my $arg (@ARGV) { if (not $parsingOptions) { # We're done parsing options; just copy all remaining arguments directly. push @commandLine, $arg; next; } + if ($copyNext) { + push @commandLine, $arg; + $copyNext = 0; + next; + } # Try to interpret Sun-style options. if ($arg eq '-version') { @@ -42,8 +50,10 @@ push @commandLine, '--help'; } elsif ($arg eq '-cp' or $arg eq '--cp') { push @commandLine, '-cp'; + $copyNext = 1; } elsif ($arg eq '-classpath' or $arg eq '--classpath') { push @commandLine, '-classpath'; + $copyNext = 1; } elsif ($arg =~ /^-Djava.library.path=(.+)$/) { # A component of the JNI search path has been given. if ($JNIPath) { @@ -51,7 +61,11 @@ } else { $JNIPath = $1; } - } elsif ($arg eq '-jar' or $arg =~ /^-D/) { + } elsif ($arg eq '-jar') { + # Copy the argument directly. + push @commandLine, $arg; + $copyNext = 1; + } elsif ($arg =~ /^-D/) { # Copy the argument directly. push @commandLine, $arg; } elsif ($arg =~ /^-/) {