[Java] cast de classe Java dans une fonction Matlab
Bonjour à tous,
Je souhaite développer une fonction Matlab permettant de charger dynamiquement (sans editer le classpath de Matlab) un jar.
Pour cela, j'ai déjà un code en Java qui fonctionne. Je peux le mettre dans un jar, l'ajouter au classpath de Matlab et l'appeller depuis Matlab. Ca fonctionne.
Voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
private static final Class[] parameters = new Class[] { URL.class };
public static void loadJar(String fileName) throws IOException
{
URL url = new File(fileName).toURL();
URLClassLoader classLoader = (URLClassLoader)ClassLoader.getSystemClassLoader();
Class sysclass = URLClassLoader.class;
try
{
Method method = sysclass.getDeclaredMethod("addURL", parameters);
method.setAccessible(true);
method.invoke(classLoader, new Object[] { url });
}
catch (Throwable throwable)
{
throwable.printStackTrace();
}
} |
Maintenant, j'aimerais convertir ce code Java en une fonction Matlab. Hors, je peine avec la ligne suivante:
URLClassLoader classLoader = (URLClassLoader)ClassLoader.getSystemClassLoader();
Comment faire le cast de ClassLoader en URLClassLoader ?
Voici ce que j'ai pour l'instant en Matlab:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
function loadJar(jarFile)
import java.lang.*;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
file = File(jarFile);
url = file.toURL();
classLoader = ClassLoader.getSystemClassLoader();
urlClassLoader = cast(classLoader, 'java.net.URLClassLoader');
urlClassLoader.addURL(url); |
J'obtiens l'erreur suivante:
Citation:
>>loadJar('C:/loadJar.jar')
??? Error using ==> cast
Unsupported class for conversion.
Error in ==> loadJar at 16
urlClassLoader = cast(classLoader, 'java.net.URLClassLoader');
Si quelqu'un a un peu d'expérience avec l'utilisation de Java depuis Matlab...
Merci d'avance