Fail to locate the ImagePath in java

Asked by winniechoi

Bug 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]

Question information

Revision history for this message
Launchpad Janitor (janitor) said :
#1

This question was expired because it remained in the 'Open' state without activity for the last 15 days.

Revision history for this message
winniechoi (winniechoi) said :
#2

hi, i still hit the issue. please help fix

Revision history for this message
RaiMan (raimund-hocke) said :
#3

Sorry, missed it.
Will have a look now.

Revision history for this message
RaiMan (raimund-hocke) said :
#4

The usage of a class name in ImagePath apparently has some bugs in 2.0.5.

This only works when running in the IDE (you already found that):
ImagePath.add(Class.forName("JarMainClass").getResource("images").getPath());

When running outside using a jar, there is currently no workaround using the ImagePath features.

Will be fixed in 2.0.6 (watch out for snapshots during the next time until final is ready).

Revision history for this message
RaiMan (raimund-hocke) said :
#5

The usage of a class name in ImagePath apparently has some bugs in 2.0.5.

This only works when running in the IDE (you already found that):
ImagePath.add(Class.forName("JarMainClass").getResource("images").getPath());

When running outside using a jar, there is currently no workaround using the ImagePath features.

Will be fixed in 2.0.6 (watch out for snapshots during the next time until final is ready).

Revision history for this message
RaiMan (raimund-hocke) said :
#6

See related bug

Revision history for this message
winniechoi (winniechoi) said :
#7

okay. noted with thanks!

Revision history for this message
RaiMan (raimund-hocke) said :
#8

Fixed. You might try with the snapshot from today (10th)