[pkg-java] r13489 - in trunk/java-wrappers: . debian
Vincent Fourmond
fourmond at alioth.debian.org
Sat Apr 2 23:48:45 UTC 2011
Author: fourmond
Date: 2011-04-02 23:48:44 +0000 (Sat, 02 Apr 2011)
New Revision: 13489
Added:
trunk/java-wrappers/get-classpath
Modified:
trunk/java-wrappers/debian/changelog
trunk/java-wrappers/debian/java-wrappers.install
trunk/java-wrappers/java-wrappers.sh
Log:
[java-wrappers] Experimental support for automatic classpath loading
Modified: trunk/java-wrappers/debian/changelog
===================================================================
--- trunk/java-wrappers/debian/changelog 2011-04-02 23:37:49 UTC (rev 13488)
+++ trunk/java-wrappers/debian/changelog 2011-04-02 23:48:44 UTC (rev 13489)
@@ -1,3 +1,9 @@
+java-wrappers (0.1.19) experimental; urgency=low
+
+ * First draft of a recursive classpath resolution function.
+
+ -- Vincent Fourmond <fourmond at debian.org> Sun, 03 Apr 2011 01:38:16 +0200
+
java-wrappers (0.1.18) unstable; urgency=low
* The "let's break Java applications in Wheezy !" upload, or, in other
Modified: trunk/java-wrappers/debian/java-wrappers.install
===================================================================
--- trunk/java-wrappers/debian/java-wrappers.install 2011-04-02 23:37:49 UTC (rev 13488)
+++ trunk/java-wrappers/debian/java-wrappers.install 2011-04-02 23:48:44 UTC (rev 13489)
@@ -1,2 +1,3 @@
java-wrappers.sh usr/lib/java-wrappers
-jvm-list.sh usr/lib/java-wrappers
\ No newline at end of file
+jvm-list.sh usr/lib/java-wrappers
+get-classpath usr/lib/java-wrappers
\ No newline at end of file
Added: trunk/java-wrappers/get-classpath
===================================================================
--- trunk/java-wrappers/get-classpath (rev 0)
+++ trunk/java-wrappers/get-classpath 2011-04-02 23:48:44 UTC (rev 13489)
@@ -0,0 +1,40 @@
+#! /usr/bin/perl
+
+
+# get-classpayth, copyright 2011 by Vincent Fourmond
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see
+# <http://www.gnu.org/licenses/>.
+
+$file = shift(@ARGV);
+open MANIFEST, "unzip -p \"$file\" META-INF/MANIFEST.MF | ";
+my $cp = "";
+while(my $line = <MANIFEST>) {
+ if($line =~ /Class-Path:\s*(.*)/) {
+ $cp = $1;
+ }
+ elsif($cp) {
+
+ if($line =~ /^ (.*)/) {
+ $cp .= $1;
+ }
+ else {
+ last;
+ }
+ }
+}
+close MANIFEST;
+$cp =~ s/\r//g;
+print "$cp\n";
+
Property changes on: trunk/java-wrappers/get-classpath
___________________________________________________________________
Added: svn:executable
+ *
Modified: trunk/java-wrappers/java-wrappers.sh
===================================================================
--- trunk/java-wrappers/java-wrappers.sh 2011-04-02 23:37:49 UTC (rev 13488)
+++ trunk/java-wrappers/java-wrappers.sh 2011-04-02 23:48:44 UTC (rev 13489)
@@ -194,12 +194,8 @@
elif [ -r $JAVA_JARPATH/$jar.jar ]; then
found_jar=$JAVA_JARPATH/$jar.jar
elif [ -r $jar ]; then
- # Maybe issue a warning that jars should not be looked
- # for absolutely ?
found_jar=$jar
elif [ -r $jar.jar ]; then
- # Maybe issue a warning that jars should not be looked
- # for absolutely ?
found_jar=$jar.jar
else
return 1 # Not found
@@ -219,6 +215,33 @@
done
}
+# This function tries to mimick the behaviour of the -jar option of
+# the java executable, by adding the target jar and all its classpath
+# recursively.
+#
+# This function is experimental for now, and its interface is not very
+# well specified yet.
+#
+# It will return without problem if the target class already is in the
+# classpath. It aborts with an error if a JAR file can't be found.
+find_jar_classpath() {
+ if locate_jar "$1"; then
+ looked_for_jars=1
+ if echo $JAVA_CLASSPATH | grep found_jar; then
+ return 0;
+ fi
+ JAVA_CLASSPATH=$JAVA_CLASSPATH:$found_jar
+ for jar in $(/usr/lib/java-wrappers/get-classpath $found_jar); do
+ find_jar_classpath $jar;
+ done
+ else
+ java_warning "Unable to locate the necessary jar file $jar"
+ return 1;
+ fi
+}
+
+
+
# Adds the first jar found to the classpath. Useful for alternative
# dependencies.
find_one_jar_in() {
@@ -232,7 +255,7 @@
java_warning "Could fine none of $@ in $JAVA_JARPATH"
return 1
}
-
+
# Runs the program !
run_java() {
if [ -z "$JAVA_CMD" ]; then
More information about the pkg-java-commits
mailing list