我想使用Geotools訪問不同的Geotools數據存儲(第17.1節)。在我的POM我使用Maven的組裝插件(V 3.0.0)聚集我的項目輸出:使用Maven Assembly插件時找不到Geotools數據存儲
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<archive>
<manifest>
<mainClass>de.my.project.MainClass</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
我geotools依賴關係:
dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>17.1</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geopkg</artifactId>
<version>17.1</version>
</dependency>
...
的問題是,我可以訪問Shape文件。在測試類我寫了這個代碼,以計算出,如果數據存儲,可以發現:
Iterator gtIterator = DataStoreFinder.getAvailableDataStores();
while(gtIterator.hasNext()){
System.out.println(gtIterator.next().toString());
}
// results in:
/*
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
org.geotools.data.shapefile.ShapefileDataStoreFacto[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
*/
如果我使用生成的JAR我只是得到運行相同的代碼:
//[email protected]
//[email protected]
任何想法可能會導致這個問題?
謝謝你,你是對的,'org.geotools.data.DataStoreFactorySpi'中的商店被覆蓋,但順序似乎不是隨機的,但。 – Lars
查看FAQ(http://docs.geotools。 org/stable/userguide/build/faq.html)瞭解Maven Shade設置的詳細信息 –