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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
>>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