2016-06-21 16 views
0

Ich habe ein Problem mit dem Erstellen einer ausführbaren Jar mit Maven erstellen Sie ein Glas, aber ich kann es nicht öffnen, weil es meine Datei nicht finden, und ich weiß nicht, was zu tun ist mehr ich diese eine Datei zum Laden verwende, wenn ich einen absoluten Pfad in der Datei, die es großeExecuteable jar mit maven, um Ressourcen zu enthalten

ClassLoader classLoader = SelectionLab.class.getClassLoader(); 
File file = new File(classLoader.getResource("Opstine.shp").getFile()); 
if (file == null) { 
     return; 
} 

und hier ist ein Teil meines pom.xml

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <archive> 
      <manifest> 
       <mainClass>geotools.SelectionLab</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> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <inherited>true</inherited> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin>  
    </plugins> 
    </build> 

image

arbeitet

Ich habe versucht, absoluten Pfad als Nachrichtentafel zu bekommen und nach dem Exportieren von Shapefile bekomme ich diese aber ich bin nicht sicher, es sucht nach Datei in jar auf Pfad F: \ workspace \ osma_grupa \ osma_grupa \ target \ osma_grupa-0.0.1 -SNAPSHOT-jar-with-dependencies.jar oder es verwenden auch diesen Teil vor Datei :. Ich habe gerade überprüft und es gibt eine Datei in der Wurzel von jar

+0

Können Sie eine neue Datei Datei file = neue Datei erstellen(); und drucke seinen absoluten Pfad. Auf diese Weise wäre es einfacher für Sie zu debuggen und die Datei entsprechend zu platzieren. – sathya

+0

Ich bin nicht sicher, was ich mit absolutem Pfad bekomme, also habe ich Bild von dem, was ich bekomme, –

+0

Wenn Sie von Eclipse ausführen, nehme ich wahrscheinlich an, dass Sie Ihren Ressourcenpfad nicht geändert haben. Wenn Sie Ihre Datei im Eclipse-Installationsordner ablegen, funktioniert sie möglicherweise. Außerdem habe ich Sie gebeten, eine Dummy-Datei zu erstellen und ihre Adresse so zu erhalten, dass Sie entschlüsseln können, wo das System nach der Datei sucht. vor unserer Classloader-Implementierung – sathya

Antwort

0

Wenn Sie SelectionLab.class.getClassLoader().getResource("Opstine.shp").getFile() verwenden, betrachtet es den Speicherort der "Opstine.shp" ist der Stammordner. Sie müssen src/main/resources in Ihrem Pfad hinzufügen.


EDIT:

Könnten Sie versuchen, oben kommt die pom-Schnipsel zu ändern, um zu sehen, ob sich etwas ändert:

<build> 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <configuration> 
      <archive> 
       <manifest> 
        <addClasspath>true</addClasspath> 
        <mainClass>geotools.SelectionLab</mainClass> 
       </manifest> 
      </archive> 
     </configuration> 
    </plugin> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
    </plugin> 
</plugins> 

+0

Ich habe das schon probiert und bekam NullPointerException –

+0

Interessant. Haben Sie versucht, den relativen Pfad zu verwenden? 'SelectionLab.class.getResource (" Opstine.shp ")' – ma3stro

+0

Datei file = neue Datei (SelectionLab.class.getResource ("Opstine.shp"). GetFile()); gibt NullPointerException Datei file = new File (SelectionLab.class.getResource ("/ Opstine.shp"). getFile()); nein NullPointerException aber es ist wieder das gleiche, Datei nicht nach dem Export geöffnet –

Verwandte Themen