2016-06-21 17 views
0

mavenを使用して実行可能なjarをビルドする際に問題がありますが、jarを作成しますが、ファイルが見つからないために開くことができません。もう 私はファイルへの絶対パスを追加した場合、それは素晴らしいresourceを含むmavenで実行可能なjar

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

とここに私の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

の一部であると動作しますが、ファイルをロードするためにこれを使用しています

それはパスF上のjar内のファイルを検索している私はmessagepaneとして絶対パスを取得しようとしたシェープファイルをエクスポートした後、私はこの enter image description here 得るが、私はわからない:\ワークスペース\ osma_grupa \ osma_grupa \ターゲットの\ osma_grupa-0.0.1 -SNAPSHOT-jar-with-dependencies.jar またはファイルの前にもこの部分を使用します。私はちょうど確認し、瓶のルートにファイルがあります

+0

は、新しいファイルファイルファイルを作成することができます=新しいファイル();その絶対パスを表示してください。そうすれば、デバッグしてそれに応じてファイルを配置する方が簡単になります。 – sathya

+0

私は絶対パスで何を得るのか分かりませんので、私が得たものの画像を投稿しました –

+0

eclipseから実行している場合は、おそらくあなたのリソースパスが変更されていないと思われます。あなたがeclipseのインストールフォルダにファイルを置くと、それが動作するかもしれません。また、ダミーファイルを作成してそのアドレスを取得するように求めましたが、システムがファイルを探している場所をデコードすることができます。私たちのクラスローダーの実装の前に – sathya

答えて

0

SelectionLab.class.getClassLoader().getResource("Opstine.shp").getFile()を使用すると、 "Opstine.shp"の場所はルートフォルダとみなされます。あなたのパスにsrc/main/resourcesを追加する必要があります。


EDIT:

は、あなたが何かの変更かどうかを確認するために、これに上記のポンポンスニペットを変更してみてくださいでした:

<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

私はすでにそれを試して、NullPointerExceptionを得た –

+0

面白い。あなたは相対パスを使って試しましたか? 'SelectionLab.class.getResource(" Opstine.shp ")' – ma3stro

+0

ファイルファイル=新しいファイル(SelectionLab.class.getResource( "Opstine.shp")。getFile()); NullPointerExceptionを返す ファイルfile =新しいファイル(SelectionLab.class.getResource( "/ Opstine.shp")。getFile()); NullPointerExceptionはありませんが、同じですが、エクスポート後にファイルを開かない –

関連する問題