The current way to handle the classpatch doesn't work
Reported by Julien Puydt
The following is a dirty hack, but at least it shows how things can be done, and that's what I use in the Debian packaging:
--- a/bin/scilab
+++ b/bin/scilab
@@ -644,6 +644,46 @@
_JAVA_OPTIONS=--add-modules=java.activation,java.xml.bind${_JAVA_OPTIONS+ $_JAVA_OPTIONS}
+# Try to set the classpath as the classpath loader doesn't work anymore
+# bad way to detect if we're during the compilation
+SYSJARS=/usr/share/java/flexdock.jar
+SYSJARS=$SYSJARS:/usr/share/java/skinlf.jar
+SYSJARS=$SYSJARS:/usr/share/java/looks.jar
+SYSJARS=$SYSJARS:/usr/share/java/commons-logging.jar
+SYSJARS=$SYSJARS:/usr/share/java/jhall.jar
+SYSJARS=$SYSJARS:/usr/share/java/lucene-core-4.10.4.jar
+SYSJARS=$SYSJARS:/usr/share/java/lucene-analyzers-common-4.10.4.jar
+SYSJARS=$SYSJARS:/usr/share/java/lucene-queryparser-4.10.4.jar
+SYSJARS=$SYSJARS:/usr/share/maven-repo/org/freehep/freehep-util/debian/freehep-util-debian.jar
+SYSJARS=$SYSJARS:/usr/share/maven-repo/org/freehep/freehep-io/debian/freehep-io-debian.jar
+SYSJARS=$SYSJARS:/usr/share/maven-repo/org/freehep/freehep-graphicsio/debian/freehep-graphicsio-debian.jar
+SYSJARS=$SYSJARS:/usr/share/java/freehep-graphicsio-emf-2.1.jar
+SYSJARS=$SYSJARS:/usr/share/java/freehep-graphics2d-2.1.1.jar
+SYSJARS=$SYSJARS:/usr/share/java/jrosetta-API.jar
+SYSJARS=$SYSJARS:/usr/share/java/jrosetta-engine-1.0.4.jar
+SYSJARS=$SYSJARS:/usr/share/java/jgraphx.jar
+SYSJARS=$SYSJARS:/usr/share/java/jogl2.jar
+SYSJARS=$SYSJARS:/usr/share/java/gluegen2-rt.jar
+SYSJARS=$SYSJARS:/usr/share/java/jeuclid-core.jar
+SYSJARS=$SYSJARS:/usr/share/java/jlatexmath-fop-1.0.7.jar
+SYSJARS=$SYSJARS:/usr/share/java/fop.jar
+SYSJARS=$SYSJARS:/usr/share/java/saxon.jar
+SYSJARS=$SYSJARS:/usr/share/java/batik.jar
+SYSJARS=$SYSJARS:/usr/share/java/xml-apis-ext.jar
+SYSJARS=$SYSJARS:/usr/share/java/commons-io.jar
+SYSJARS=$SYSJARS:/usr/share/java/xmlgraphics-commons.jar
+SYSJARS=$SYSJARS:/usr/share/java/avalon-framework.jar
+SYSJARS=$SYSJARS:/usr/share/java/jlatexmath-1.0.7.jar
+SYSJARS=$SYSJARS:/usr/share/java/ecj.jar
+if test -r "./etc/classpath.xml"; then
+ SCIJARS=`find modules -name "*.jar" -type f | tr "\n" ":"`
+else
+ SCIJARS=`find /usr/share/scilab/modules -name "*.jar" -type f | tr "\n" ":"`
+fi
+_JAVA_OPTIONS=-Djava.class.path=$SYSJARS:$SCIJARS${_JAVA_OPTIONS+ $_JAVA_OPTIONS}
+
+export _JAVA_OPTIONS
+
if test $IS_SCILAB_BINARY -eq 1; then
if test ! -d "$SCIBINARYBASE/thirdparty/tcl8.5"; then
--- a/modules/jvm/src/java/org/scilab/modules/jvm/ClassPath.java
+++ b/modules/jvm/src/java/org/scilab/modules/jvm/ClassPath.java
@@ -62,7 +62,7 @@
*/
public static void addURL(final URL u, int i) {
- final URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
+ /*final URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class sysclass = URLClassLoader.class;
try {
@@ -70,10 +70,10 @@
final Method method = sysclass.getDeclaredMethod("addURL", parameters);
method.setAccessible(true);
switch (i) {
- case 0: /* Load now */
+ case 0: /* Load now
method.invoke(sysloader , new Object[] { u });
break;
- case 1: /* Load later (background) */
+ case 1: /* Load later (background)
queued.add(u);
break;
}
@@ -84,7 +84,7 @@
System.err.println("Error: Illegal access: " + e.getLocalizedMessage());
} catch (InvocationTargetException e) {
System.err.println("Error: Could not invocate target: " + e.getLocalizedMessage());
- }
+ } */
}
/*-----------------------------------------------------------------------*/
@@ -94,13 +94,14 @@
*/
public static String[] getClassPath() {
- URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
+ return new String[0];
+ /* URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
URL[] path = sysloader.getURLs();
String[] paths = new String[path.length];
for (int i = 0; i < path.length; i++) {
paths[i] = path[i].getFile();
}
- return paths;
+ return paths;*/
}