2016-05-13 16 views
0

Ich schreibe eine Anwendung, die SikuliX verwendet, und ich habe Probleme, ein Glas aus meinem Code zu generieren.Verpacken von Bildern für SikuliX in Maven

Ich habe die Bilder für meinen Code in src/main/resources gespeichert verwendet, und ich baue das Glas mit diesem Code in meinem pom.xml

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>com.dustinroepsch.leadtimetool.Main</mainClass> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Als ich das erstellte JAR mit 7-zip öffnen, kann ich sehen, dass meine Bilder zur Wurzel des Glases hinzugefügt werden. Ich denke, das ist was ich will, aber ich bin mir nicht sicher.

Ich Bezugnahme auf die Bilder in meinem meinen Code über

Screen s = new Screen(); 
ImagePath.add("src/main/resources"); 
s.hover("1462980188453.png"); 

Und wenn ich meinen Code durch die Netbeans starten Taste „Play“ es toll läuft.

jedoch in, wenn ich das Glas mit Abhängigkeiten von der Kommandozeile ausführen, bekomme ich die Fehler

FindFailed: Region: doFind: Image not loadable: 1462980188453.png 

Die Bilder werden in dem Glas verpackt, und das Glas hat die Sikuli Abhängigkeiten in Seite davon. Gibt es einen Bildpfad, den ich hinzufügen kann, damit mein ausführbares jar die Bilder korrekt findet?

Danke!

Antwort

0

Ich fand eine gute Lösung.

Maven packt automatisch alles in Ihrem Ressourcenverzeichnis in die Wurzel des Jars.

Was Sie tun sollten, ist einen Ordner in Ihrem Ressourcen-Verzeichnis namens "Bilder" (oder irgendetwas), und legen Sie Ihren Ordner darin.

Dann können Sie ImagePath.add("com.yourcompany.yourpackage.AnyClass/images");

Dinge werden dann verwenden Sie als

vorgesehen funktionieren