diff --git a/src/main/java/org/opengis/cite/wms13/CtlController.java b/src/main/java/org/opengis/cite/wms13/CtlController.java index 9fc99ee..de0bd1c 100644 --- a/src/main/java/org/opengis/cite/wms13/CtlController.java +++ b/src/main/java/org/opengis/cite/wms13/CtlController.java @@ -3,6 +3,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; @@ -41,7 +42,7 @@ public CtlController() { try (InputStream is = getClass().getResourceAsStream("ets.properties")) { this.etsProperties.load(is); String mainScriptPath = etsProperties.getProperty("main-script"); - File ctlFile = findScriptFile(URI.create(mainScriptPath)); + Object ctlFile = findScriptFile(URI.create(mainScriptPath)); setupOpts.addSource(ctlFile); this.executor = new CtlExecutor(setupOpts); } @@ -115,7 +116,7 @@ public Source doTestRun(Document testRunArgs) throws Exception { * @param uri An absolute or relative URI. * @return A File object, or null if one could not be created. */ - final File findScriptFile(URI uri) { + final Object findScriptFile(URI uri) { File ctlFile = null; File baseDir = SetupOptions.getBaseConfigDirectory(); if (!uri.isAbsolute()) { @@ -124,6 +125,12 @@ final File findScriptFile(URI uri) { } if (null == ctlFile || !ctlFile.isFile()) { URL resource = getClass().getResource(uri.getPath()); + if (resource.getProtocol().equals("jar")) { + // See https://github.com/opengeospatial/ets-wms13/issues/120 and + // https://github.com/opengeospatial/teamengine/issues/632 + // will return an URL + return resource; + } try { ctlFile = new File(resource.toURI()); }