首先,请原谅我在邮件中可能看到的任何错误,我不是母语人士。
我正在寻求GeoTools的帮助。我一直在将它用于学校的项目,直到现在我几乎没有问题。
但是现在我的项目已经完成,我已经尝试使用maven的阴影插件构建一个可执行jar,就像GeoTools'常见问题。
这是我的问题,当我尝试使用在我输入' mvn package'时创建的jar时,我收到此错误:
java.lang.UnsupportedOperationException: Trying to get a reader from an unknown format. at org.geotools.coverage.grid.io.UnknownFormat.getReader(UnknownFormat.j ava:62) at coeurDLL.SMap.<init>(SMap.java:44) at coeurDLL.CoeurController.initialize(CoeurController.java:103) at coeur.Interface.getMapsAndDisplay(Interface.java:152) at coeur.Interface.<init>(Interface.java:948) at coeur.Interface.main(Interface.java:957) java.lang.NullPointerException at coeurDLL.CoeurController.getColumnsFields(CoeurController.java:225) at coeur.Interface.setControlPanel(Interface.java:327) at coeur.Interface.displayMainWindow(Interface.java:185) at coeur.Interface.getMapsAndDisplay(Interface.java:162) at coeur.Interface.<init>(Interface.java:948) at coeur.Interface.main(Interface.java:957)
当我尝试使用&#34; reader.read(null)&#34;方法读取GeoTif文件时,会发生这种情况。 当然,在Eclipse上执行项目时我没有遇到这个问题。
我在某处读到这可能是一个依赖性问题,但我不知道我可能错过了什么。
一些可能有用的细节: - 我使用的是GeoTools版本12-RC1 - 我没有使用JAI库,我在Java Pure模式下工作。它允许我使用64位jdk。我试着用32位的jdk好奇,但我仍然有同样的问题。 - 我正在使用Windows 7,但它不应该有任何区别。
这是我的pom.xml的内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pfe.coeur</groupId>
<artifactId>coeur</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>tuto</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<geotools.version>12-RC1</geotools.version>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<encoding>UTF-8</encoding>
<target>1.8</target>
<source>1.8</source>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- This bit sets the main class for the executable jar as you otherwise -->
<!-- would with the assembly plugin -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>coeur.Interface</Main-Class>
</manifestEntries>
</transformer>
<!-- This bit merges the various GeoTools META-INF/services files -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-coverage</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-render</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-swing</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geotiff</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-image</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-wms</artifactId>
<version>${geotools.version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net repository</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>osgeo</id>
<name>Open Source Geospatial Foundation Repository</name>
<url>http://download.osgeo.org/webdav/geotools/</url>
</repository>
</repositories>
</project>
当我从依赖项中删除gt:geotiff时,我可以在Eclipse上遇到同样的错误。但是jar确实包含了这种依赖性。
如果有人能帮助我解决这个问题,我将非常感激。我需要这个可执行的jar来完成我的项目,而且我没有足够的时间来完成它。
此致