Author: chatellier Date: 2009-05-12 15:40:58 +0000 (Tue, 12 May 2009) New Revision: 2222 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java Log: Fix les entr?\195?\169es dupliqu?\195?\169es et/ou non normalis?\195?\169e du classpath Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2009-05-12 15:05:18 UTC (rev 2221) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2009-05-12 15:40:58 UTC (rev 2222) @@ -25,16 +25,23 @@ import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; +import java.net.MalformedURLException; import java.net.URL; +import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.List; +import javax.tools.FileObject; +import javax.tools.ForwardingJavaFileManager; import javax.tools.JavaCompiler; +import javax.tools.JavaFileManager; import javax.tools.JavaFileObject; import javax.tools.StandardJavaFileManager; +import javax.tools.StandardLocation; +import javax.tools.JavaFileObject.Kind; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; @@ -246,8 +253,13 @@ public static String getClassPathAsString(List<File> classpath) throws Exception { String result = StringUtils.join(classpath.iterator(), - File.pathSeparator) - + File.pathSeparator + System.getProperty("java.class.path"); + File.pathSeparator); + + // chatellier : since 20090512 java.class.path in not added to + // classpath. + // result in duplicated entry or non normalised entry + // en compilation fail some times + //+ File.pathSeparator + System.getProperty("java.class.path"); // Ajout des jars for (Enumeration<?> e = CompileHelper.class.getClassLoader() @@ -265,6 +277,18 @@ } } + // chatellier : mais sous eclipse par exemple, on a besoin du classpath + // on test que le class path n'est pas un jar et qu'il n'apparait + // pas deja : + String systemClassPath = System.getProperty("java.class.path"); + String[] systemClassPathes = systemClassPath.split(File.pathSeparator); + for (String path : systemClassPathes) { + String absolutePath = new File(path).getCanonicalPath(); + if (!result.contains(absolutePath)) { + result += File.pathSeparator + absolutePath; + } + } + if (log.isDebugEnabled()) { log.debug("CLASSPATH : " + result); }