Control: tags -1 patch

Hello Andreas,

I am attaching a patch that seems to fix the problem. This patch can be
applied on top of the current version in testing, no further changes are
required, but please double-check if the r-deps continue to work. At
least the classes are generated again.

The build should have horribly failed in my opinion because if you take
a look at the build log, there is a ClassCastException which makes it
impossible to generate the class files. This issue in turn is caused by
a change in Java 9 where you can no longer cast URLClassLoader due to
new restrictions, well explained here:

http://java9.wtf/class-loading/

(I love the homepage name)

I tried to follow the solution and hope it helps.

Regards,

Markus
From: Markus Koschany <a...@debian.org>
Date: Mon, 25 Mar 2019 14:44:22 +0100
Subject: URLClassLoader

---
 src/org/netlib/generate/JavaGenerator.java | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/org/netlib/generate/JavaGenerator.java b/src/org/netlib/generate/JavaGenerator.java
index fda8e9d..88cb3f3 100644
--- a/src/org/netlib/generate/JavaGenerator.java
+++ b/src/org/netlib/generate/JavaGenerator.java
@@ -51,6 +51,8 @@ import org.netlib.util.doubleW;
 import org.netlib.util.floatW;
 import org.netlib.util.intW;
 
+import java.net.MalformedURLException;
+
 /**
  * Due to the depressing number of LAPACK routines, it is much more efficient to
  * auto-generate the Java code for the wrapper and corresponding Java and JNI
@@ -643,7 +645,8 @@ class JavaGenerator {
 	 * @return all classes in a given package
 	 * @see http://forum.java.sun.com/thread.jspa?threadID=757391&messageID=4326850
 	 */
-	private List<Class<?>> getClasses(String packageName, IClassFilter filter) {
+	private List<Class<?>> getClasses(String packageName, IClassFilter filter)
+		throws MalformedURLException{
 		String packagePath = packageName.replace('.', '/');
 //		ArrayList<URL> classpath = new ArrayList<URL>();
 //		String[] classpathString = System.getProperty("java.class.path").split(":");
@@ -658,7 +661,17 @@ class JavaGenerator {
 //					log(Level.SEVERE, classpathString[i] + " " + ex.getMessage());
 //			}
 //		}
-		URL [] classpath = ((URLClassLoader) ClassLoader.getSystemClassLoader()).getURLs();
+		URL url1 = new URL("file:///usr/share/java/junit-3.8.2.jar");
+		URL url2 = new URL("file:///usr/share/java/f2jutil-0.8.1.jar");
+		URL url3 = new URL("file:///usr/share/java/jlapack-blas-0.8.jar");
+		URL url4 = new URL("file:///usr/share/java/jlapack-lapack-0.8.jar");
+		URL url5 = new URL("file:///usr/share/java/jlapack-xerbla-0.8.jar");
+		URL url6 = new URL("file:///build/netlib-java-0.9.3/build/classes/");
+
+		URL [] path = { url1, url2, url3, url4, url5, url6 };
+		ClassLoader parent = ClassLoader.getPlatformClassLoader();
+		URLClassLoader loader = new URLClassLoader(path, parent);
+		URL classpath[] = loader.getURLs();
 		List<Class<?>> result = new ArrayList<Class<?>>();
 		System.out.println(Arrays.toString(classpath));
 		for (URL url : classpath) {

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to