← Back to team overview

sikuli-driver team mailing list archive

[Bug 1960350] [NEW] [2.0.5] ImagePath: using a class as folder reference does not work when running a jar containing the images

 

Public bug reported:

tracked on Github: https://github.com/RaiMan/SikuliX1/issues/511

-----------------------------


Hi , i tried to locate the image path using ("someClass/images"), but fail to add it in the image path. Only target/classes folder is added. the sub folder is not added...
My Project Structure
src
-main
--java
--JarMainClass
-resources
--images
---app2
----image1.png

Code:

public class JarMainClass {
    public static void main(String[] args) throws IOException, URISyntaxException, FindFailed {
        System.out.println("Hello!");
        ImagePath.add("JarMainClass/images/app2");
        System.out.println("1: "+ImagePath.getPaths());

}

Console:

[ERROR Commons] parameter(main: JarMainClass/images/app2, sub: null)
[ERROR Commons] makeURL: file does not exist: C:\Users\winnie.choi\Documents\testproject\JarMainClass\images\app2
[ERROR Commons] parameter(main: file:/C:/Users/winnie.choi/Documents/testproject/target/classes/, sub: images/app2)
[ERROR Commons] makeURL: URL protocol not implemented
1: [null, C:\Users\winnie.choi\Documents\testproject\target\classes]

Environment
sikulixapi: 2.0.5
java: 1.8
OS: Windows Server 2012 R2
Maven

---------
I am able to add path by providing absolute path (e.g. src/main/resources/images/app2) or using ClassLoader.getSystemResource("images/app2").getPath() when running in the IDE. But i am unable to add the image path when running the exported jar. following is logged when trying to access the path by getResource() function
[ERROR Commons] parameter(main: file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2, sub: null)
[ERROR Commons] makeURL: mainFile.getCanonicalFile().toURI().toURL(): C:\Users\winnie.choi\Documents\jar\file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2 (The filename, directory name, or volume label syntax is incorrect)
[ERROR Commons] parameter(main: file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2, sub: null)
[ERROR Commons] makeURL: file does not exist: C:\Users\winnie.choi\Documents\jar\file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2
path:[null]

** Affects: sikuli
     Importance: High
     Assignee: RaiMan (raimund-hocke)
         Status: In Progress

** Changed in: sikuli
   Importance: Undecided => High

** Changed in: sikuli
     Assignee: (unassigned) => RaiMan (raimund-hocke)

** Changed in: sikuli
    Milestone: None => 2.0.6

** Changed in: sikuli
       Status: New => In Progress

** Description changed:

+ tracked on Github: https://github.com/RaiMan/SikuliX1/issues/511
+ 
+ -----------------------------
+ 
+ 
  Hi , i tried to locate the image path using ("someClass/images"), but fail to add it in the image path. Only target/classes folder is added. the sub folder is not added...
  My Project Structure
  src
  -main
  --java
  --JarMainClass
  -resources
  --images
  ---app2
  ----image1.png
  
- 
  Code:
  
  public class JarMainClass {
-     public static void main(String[] args) throws IOException, URISyntaxException, FindFailed {
-         System.out.println("Hello!");
-         ImagePath.add("JarMainClass/images/app2");
-         System.out.println("1: "+ImagePath.getPaths());
+     public static void main(String[] args) throws IOException, URISyntaxException, FindFailed {
+         System.out.println("Hello!");
+         ImagePath.add("JarMainClass/images/app2");
+         System.out.println("1: "+ImagePath.getPaths());
  
  }
  
  Console:
  
  [ERROR Commons] parameter(main: JarMainClass/images/app2, sub: null)
  [ERROR Commons] makeURL: file does not exist: C:\Users\winnie.choi\Documents\testproject\JarMainClass\images\app2
  [ERROR Commons] parameter(main: file:/C:/Users/winnie.choi/Documents/testproject/target/classes/, sub: images/app2)
  [ERROR Commons] makeURL: URL protocol not implemented
  1: [null, C:\Users\winnie.choi\Documents\testproject\target\classes]
  
  Environment
  sikulixapi: 2.0.5
  java: 1.8
  OS: Windows Server 2012 R2
  Maven
  
- 
  ---------
  I am able to add path by providing absolute path (e.g. src/main/resources/images/app2) or using ClassLoader.getSystemResource("images/app2").getPath() when running in the IDE. But i am unable to add the image path when running the exported jar. following is logged when trying to access the path by getResource() function
  [ERROR Commons] parameter(main: file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2, sub: null)
  [ERROR Commons] makeURL: mainFile.getCanonicalFile().toURI().toURL(): C:\Users\winnie.choi\Documents\jar\file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2 (The filename, directory name, or volume label syntax is incorrect)
  [ERROR Commons] parameter(main: file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2, sub: null)
  [ERROR Commons] makeURL: file does not exist: C:\Users\winnie.choi\Documents\jar\file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2
  path:[null]

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to SikuliX.
https://bugs.launchpad.net/bugs/1960350

Title:
  [2.0.5] ImagePath: using a class as folder reference does not work
  when running a jar containing the images

Status in SikuliX:
  In Progress

Bug description:
  tracked on Github: https://github.com/RaiMan/SikuliX1/issues/511

  -----------------------------

  
  Hi , i tried to locate the image path using ("someClass/images"), but fail to add it in the image path. Only target/classes folder is added. the sub folder is not added...
  My Project Structure
  src
  -main
  --java
  --JarMainClass
  -resources
  --images
  ---app2
  ----image1.png

  Code:

  public class JarMainClass {
      public static void main(String[] args) throws IOException, URISyntaxException, FindFailed {
          System.out.println("Hello!");
          ImagePath.add("JarMainClass/images/app2");
          System.out.println("1: "+ImagePath.getPaths());

  }

  Console:

  [ERROR Commons] parameter(main: JarMainClass/images/app2, sub: null)
  [ERROR Commons] makeURL: file does not exist: C:\Users\winnie.choi\Documents\testproject\JarMainClass\images\app2
  [ERROR Commons] parameter(main: file:/C:/Users/winnie.choi/Documents/testproject/target/classes/, sub: images/app2)
  [ERROR Commons] makeURL: URL protocol not implemented
  1: [null, C:\Users\winnie.choi\Documents\testproject\target\classes]

  Environment
  sikulixapi: 2.0.5
  java: 1.8
  OS: Windows Server 2012 R2
  Maven

  ---------
  I am able to add path by providing absolute path (e.g. src/main/resources/images/app2) or using ClassLoader.getSystemResource("images/app2").getPath() when running in the IDE. But i am unable to add the image path when running the exported jar. following is logged when trying to access the path by getResource() function
  [ERROR Commons] parameter(main: file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2, sub: null)
  [ERROR Commons] makeURL: mainFile.getCanonicalFile().toURI().toURL(): C:\Users\winnie.choi\Documents\jar\file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2 (The filename, directory name, or volume label syntax is incorrect)
  [ERROR Commons] parameter(main: file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2, sub: null)
  [ERROR Commons] makeURL: file does not exist: C:\Users\winnie.choi\Documents\jar\file:\C:\Users\winnie.choi\Documents\jar\jar-with-dependencies.jar!\images\app2
  path:[null]

To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/1960350/+subscriptions



Follow ups