Author: tchemit Date: 2009-02-08 14:06:23 +0000 (Sun, 08 Feb 2009) New Revision: 1799 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java Log: faire fonctionner les simulations en jnlp (il reste un cas qui ne fonctionne pas : en sub process + aspect) Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-02-08 14:05:20 UTC (rev 1798) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/InProcessSimulatorLauncher.java 2009-02-08 14:06:23 UTC (rev 1799) @@ -212,7 +212,8 @@ IsisFish.config.getCompileDirectory().toURI().toURL() }; //URL [] classpath = new URL[]{directory.toURL()}; - AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath); + AspectClassLoader loader = new AspectClassLoader(classpath, IsisFish.class.getClassLoader()); //new URLClassLoader(classpath); + //AspectClassLoader loader = new AspectClassLoader(classpath, ClassLoader.getSystemClassLoader()); //new URLClassLoader(classpath); thread.setContextClassLoader(loader); log.info("Classloader used for simulation: " + loader + " " + Arrays.toString(loader.getURLs())); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-02-08 14:05:20 UTC (rev 1798) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-02-08 14:06:23 UTC (rev 1799) @@ -27,6 +27,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.rmi.RemoteException; +import java.net.URLClassLoader; +import java.net.URL; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -118,6 +120,25 @@ File.separator + "bin" + File.separator + "java"; String classpath = System.getProperty("java.class.path"); + if (classpath==null) { + // could not find the jvm property (jnlp context for example) + // rebuild the classpath as in {@link AspectClassLoader} + String pathSep = File.pathSeparator; + ClassLoader loader = IsisFish.class.getClassLoader(); + if (loader instanceof URLClassLoader) { + URLClassLoader urlLoader = (URLClassLoader) loader; + StringBuilder buffer = new StringBuilder(); + for (URL url : urlLoader.getURLs()) { + buffer.append(pathSep).append(url.getPath()); + } + classpath=buffer.substring(1); + } else { + //FIXME, should do as in {@link AspectClassLoader} + } + } + if (log.isDebugEnabled()) { + log.debug("classpath to use : " + classpath); + } // prepare le process ProcessBuilder processBuilder = new ProcessBuilder( java, "-classpath", classpath,
participants (1)
-
tchemit@users.labs.libre-entreprise.org