This is an automated email from the git hooks/post-receive script. pini pushed a commit to tag upstream/1.1.0_beta1 in repository sikuli.
commit 8ebb66b1053b292a70c292b63262688ffc474eb4 Author: Raimund Hocke <[email protected]> Date: Tue Dec 31 16:09:57 2013 +0100 fixed libs handling when running in Maven context --- .../java/org/sikuli/basics/ResourceLoader.java | 100 +++++++++++---------- 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/Basics/src/main/java/org/sikuli/basics/ResourceLoader.java b/Basics/src/main/java/org/sikuli/basics/ResourceLoader.java index 4bb1405..0e9e306 100755 --- a/Basics/src/main/java/org/sikuli/basics/ResourceLoader.java +++ b/Basics/src/main/java/org/sikuli/basics/ResourceLoader.java @@ -14,6 +14,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; +import java.net.MalformedURLException; import java.net.URL; import java.security.CodeSource; import java.util.ArrayList; @@ -21,10 +22,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; -import org.sikuli.natives.RunNatives; -import org.sikuli.libs.RunLibs; public class ResourceLoader implements IResourceLoader { @@ -54,6 +55,7 @@ public class ResourceLoader implements IResourceLoader { private String jarPath = null; private URL jarURL = null; private URL libsURL = null; + private URL tessURL = null; private String fileList = "/filelist.txt"; private static final String sikhomeEnv = System.getenv("SIKULIX_HOME"); private static final String sikhomeProp = System.getProperty("sikuli.Home"); @@ -102,11 +104,7 @@ public class ResourceLoader implements IResourceLoader { public ResourceLoader() { log0(lvl, "SikuliX Package Build: %s %s", Settings.getVersionShort(), RunSetup.timestampBuilt); cl = this.getClass().getClassLoader(); - if (RunSetup.isRunningUpdate()) { - codeSrc = FileManager.class.getProtectionDomain().getCodeSource(); - } else { - codeSrc = RunNatives.class.getProtectionDomain().getCodeSource(); - } + codeSrc = this.getClass().getProtectionDomain().getCodeSource(); if (codeSrc != null && codeSrc.getLocation() != null) { jarURL = codeSrc.getLocation(); jarPath = jarURL.getPath(); @@ -126,11 +124,6 @@ public class ResourceLoader implements IResourceLoader { log(-1, "Fatal Error 101: Not possible to access the jar files!"); SikuliX.terminate(101); } - - CodeSource cs = RunLibs.class.getProtectionDomain().getCodeSource(); - if (codeSrc != null && codeSrc.getLocation() != null) { - libsURL = cs.getLocation(); - } regMap.put("EnvPath", new String[]{"HKEY_CURRENT_USER\\Environment", "PATH", "REG_EXPAND_SZ"}); } @@ -167,22 +160,29 @@ public class ResourceLoader implements IResourceLoader { public void check(String what) { mem = "check"; + if (!what.equals(Settings.SIKULI_LIB)) { + log(-1, "Currently only Sikuli libs supported!"); + return; + } + if (System.getProperty("sikuli.DoNotExport") == null && !isFatJar()) { - if (!jarPath.contains("Natives") && !Settings.isMac()) { + libsURL = null; + if (jarPath.contains("Basics")) { + try { + SikuliX.addToClasspath(jarPath.replace("Basics", "Libs")); + libsURL = new URL(jarURL.toString().replace("Basics", "Libs")); + tessURL = new URL(jarURL.toString().replace("Basics", "Tesseract")); + log(-1, "The jar in use was not built with setup!\n" + + "We might be running from local Maven repository?\n" + jarPath); + } catch (Exception ex) { + } + } + if (libsURL == null) { RunSetup.popError("Terminating: The jar in use was not built with setup!\n" + jarPath); System.exit(1); - } else { - jarURL = libsURL; - jarPath = jarPath.replace("Natives", "Libs"); - log(-1, "The jar in use was not built with setup!\nAre we running in some IDE or from local Maven repository? trying:\n" + jarPath); } } - if (!what.equals(Settings.SIKULI_LIB)) { - log(-1, "Currently only Sikuli libs supported!"); - return; - } - if (libPath == null || libsDir == null) { libPath = null; libsDir = null; @@ -279,19 +279,21 @@ public class ResourceLoader implements IResourceLoader { // check parent folder of jar file if (libPath == null && jarPath != null) { if (jarPath.endsWith(".jar")) { - String lfp = jarParentPath + "libs"; - libsfolder = (new File(lfp)); - if (libsfolder.exists()) { - libPath = lfp; - } - if (Settings.isMacApp) { - libPath = libPathMac; - } - log(lvl, "Exists libs folder at location of jar? %s: %s", libPath == null ? "NO" : "YES", jarParentPath); - libsDir = checkLibsDir(libPath); - if (libsDir == null && System.getProperty("sikuli.DoNotExport") != null) { - log(-1, "No valid libs folder with option sikuli.DoNotExport"); - System.exit(1); + if (libsURL == null) { + String lfp = jarParentPath + "libs"; + libsfolder = (new File(lfp)); + if (libsfolder.exists()) { + libPath = lfp; + } + if (Settings.isMacApp) { + libPath = libPathMac; + } + log(lvl, "Exists libs folder at location of jar? %s: %s", libPath == null ? "NO" : "YES", jarParentPath); + libsDir = checkLibsDir(libPath); + if (libsDir == null && System.getProperty("sikuli.DoNotExport") != null) { + log(-1, "No valid libs folder with option sikuli.DoNotExport"); + System.exit(1); + } } } else { log(lvl, "not running from jar: " + jarParentPath); @@ -364,9 +366,7 @@ public class ResourceLoader implements IResourceLoader { if (libPath == null) { log(-1, "No valid libs path available until now!"); if (libPath == null && jarParentPath != null) { - if (jarPath.endsWith(".jar") - && // hack to avoid libs dir in Maven local repo - !jarPath.contains("SikuliX-Libs")) { + if (jarPath.endsWith(".jar") && libsURL == null) { log(-2, "Please wait! Trying to extract libs to jar parent folder: " + jarParentPath); File jarPathLibs = extractLibs((new File(jarParentPath)).getAbsolutePath(), libSource); if (jarPathLibs == null) { @@ -374,7 +374,6 @@ public class ResourceLoader implements IResourceLoader { } else { libPath = jarPathLibs.getAbsolutePath(); } - } else { } } if (libPath == null && userSikuli != null) { @@ -435,10 +434,6 @@ public class ResourceLoader implements IResourceLoader { Settings.OcrDataPath = "/usr/local/share"; } log(lvl, "If OCR/Text activated: Using as OCR directory (tessdata): " + Settings.OcrDataPath); - if (!new File(Settings.OcrDataPath, "tessdata").exists()) { - log(lvl, "Trying to extract tessdata folder since it does not exist yet."); - export("META-INF/libs#tessdata", libPath); - } } } @@ -588,7 +583,12 @@ public class ResourceLoader implements IResourceLoader { prefix -= 1; } } - List<String[]> entries = makePackageFileList(jarURL, res, true); + URL currentURL = jarURL; +//TODO special export cases from jars not on class path + if (res.contains("tessdata")) { + currentURL = tessURL; + } + List<String[]> entries = makePackageFileList(currentURL, res, true); if (entries == null || entries.isEmpty()) { return false; } @@ -653,6 +653,15 @@ public class ResourceLoader implements IResourceLoader { } else if ("itIsJython".equals(action)) { itIsJython = true; return true; + } else if ("exportTessdata".equals(action)) { + if (tessURL != null) { + SikuliX.addToClasspath(jarPath.replace("Basics", "Tesseract")); + } + if (!new File(Settings.OcrDataPath, "tessdata").exists()) { + log(lvl, "Trying to extract tessdata folder since it does not exist yet."); + export("META-INF/libs#tessdata", libPath); + } + return true; } else { return false; } @@ -817,7 +826,8 @@ public class ResourceLoader implements IResourceLoader { private File extractLibs(String targetDir, String libSource) { String memx = mem; mem = "extractLibs"; - List<String[]> libsList = makePackageFileList(jarURL, libSource, false); + List<String[]> libsList = makePackageFileList( + (libsURL != null) ? libsURL : jarURL, libSource, false); if (libsList == null) { mem = memx; return null; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/sikuli.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

