我有一个有一些依赖项的java应用程序,其中有一个具有自己的依赖项的项目。每当我从Netbeans运行它或使用mvn exec就可以了,但是当我尝试打包它时,即使它已成功构建,在运行时我也会收到以下错误:
Exception in thread "main" org.openrdf.rio.UnsupportedRDFormatException: No parser factory available for RDF format Turtle (mimeTypes=text/turtle, application/x-turtle; ext=ttl)
at org.openrdf.rio.Rio.createParser(Rio.java:198)
at org.openrdf.rio.Rio.createParser(Rio.java:213)
at org.openrdf.repository.util.RDFLoader.loadInputStreamOrReader(RDFLoader.java:318)
at org.openrdf.repository.util.RDFLoader.load(RDFLoader.java:222)
at org.openrdf.repository.util.RDFLoader.load(RDFLoader.java:104)
at org.openrdf.repository.base.RepositoryConnectionBase.add(RepositoryConnectionBase.java:217)
at net.antidot.semantic.rdf.model.impl.sesame.SesameDataSet.loadDataFromFile(SesameDataSet.java:160)
所以问题是sesame rio解析器似乎不包括在内,即使我可以在我的maven存储库中看到它们。 我在所包含的项目中包含所有依赖项。 我也尝试将它们排除并明确地将它们添加到我的主项目中,它再次失败了。
有什么建议吗?
我的依赖树:
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ RMLMapper ---
[INFO] be.ugent.mmlab:RMLMapper:jar:0.1
[INFO] +- junit:junit:jar:4.11:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- xom:xom:jar:1.2.5:compile
[INFO] | +- xml-apis:xml-apis:jar:1.3.03:compile
[INFO] | +- xerces:xercesImpl:jar:2.8.0:compile
[INFO] | \- xalan:xalan:jar:2.7.0:compile
[INFO] +- jlibs:jlibs-xmldog:jar:1.0:compile
[INFO] | +- jlibs:jlibs-xml:jar:1.0:compile
[INFO] | | +- jlibs:jlibs-core:jar:1.0:compile
[INFO] | | \- jlibs:jlibs-nbp:jar:1.0:compile
[INFO] | \- jaxen:jaxen:jar:1.1.1:compile
[INFO] +- com.jayway.jsonpath:json-path:jar:0.8.1:compile
[INFO] | +- net.minidev:json-smart:jar:1.1.1:compile
[INFO] | \- commons-lang:commons-lang:jar:2.6:compile
[INFO] +- com.jayway.jsonpath:json-path-assert:jar:0.9.1:test
[INFO] | \- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] +- net.antidot:db2triples:jar:1.0.2:compile
[INFO] | +- commons-logging:commons-logging:jar:1.1.2:compile
[INFO] | +- mysql:mysql-connector-java:jar:5.1.25:compile
[INFO] | +- postgresql:postgresql:jar:9.1-901.jdbc4:compile
[INFO] | \- org.slf4j:slf4j-simple:jar:1.6.1:runtime
[INFO] +- org.openrdf.sesame:sesame-runtime:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-model:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-api:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-manager:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-repository-event:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-sail-memory:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-http-client:jar:2.7.12:compile
[INFO] | | | \- commons-httpclient:commons-httpclient:jar:3.1:compile
[INFO] | | \- org.openrdf.sesame:sesame-http-protocol:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-http:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-queryparser-api:jar:2.7.12:compile
[INFO] | | \- org.openrdf.sesame:sesame-queryresultio-api:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-sparql:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-queryparser-sparql:jar:2.7.12:compile
[INFO] | | \- org.openrdf.sesame:sesame-queryresultio-sparqlxml:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-contextaware:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-sail:jar:2.7.12:compile
[INFO] | | \- org.openrdf.sesame:sesame-rio-trig:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-sail-api:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-sail-federation:jar:2.7.12:compile
[INFO] | +- org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] | +- org.openrdf.sesame:sesame-queryparser-serql:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-queryresultio-binary:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-queryresultio-sparqljson:jar:2.7.12:runtime
[INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.2.1:runtime
[INFO] | +- org.openrdf.sesame:sesame-queryresultio-text:jar:2.7.12:runtime
[INFO] | | \- net.sf.opencsv:opencsv:jar:2.0:runtime
[INFO] | +- org.openrdf.sesame:sesame-repository-dataset:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-languages:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-binary:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-nquads:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-n3:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-rdfjson:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-rdfxml:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-trix:jar:2.7.12:runtime
[INFO] | \- org.openrdf.sesame:sesame-sail-rdbms:jar:2.7.12:runtime
[INFO] | \- commons-dbcp:commons-dbcp:jar:1.3:runtime
[INFO] | \- commons-pool:commons-pool:jar:1.5.4:runtime
[INFO] +- org.openrdf.sesame:sesame-sail-nativerdf:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-sail-inferencer:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-queryalgebra-evaluation:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-queryalgebra-model:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-query:jar:2.7.12:compile
[INFO] | \- org.openrdf.sesame:sesame-util:jar:2.7.12:compile
[INFO] +- com.sun.org.apache:jaxp-ri:jar:1.4:compile
[INFO] | \- javax.xml.parsers:jaxp-api:jar:1.4:compile
[INFO] +- net.sourceforge.javacsv:javacsv:jar:2.0:compile
[INFO] +- commons-io:commons-io:jar:1.3.2:compile
[INFO] +- net.sf.saxon:Saxon-HE:jar:compressed:9.5.1-4:compile
[INFO] +- org.jodd:jodd-lagarto:jar:3.5:compile
[INFO] | +- org.jodd:jodd-log:jar:3.5:compile
[INFO] | \- org.jodd:jodd-core:jar:3.5:compile
[INFO] +- org.jsoup:jsoup:jar:1.7.3:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.2.2:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.2.2:compile
[INFO] | \- commons-codec:commons-codec:jar:1.6:compile
[INFO] +- com.github.fge:uri-template:jar:0.9:compile
[INFO] | +- com.github.fge:msg-simple:jar:1.1:compile
[INFO] | | \- com.github.fge:btf:jar:1.2:compile
[INFO] | +- com.google.guava:guava:jar:16.0.1:compile
[INFO] | \- com.google.code.findbugs:jsr305:jar:2.0.1:compile
[INFO] +- org.openrdf.sesame:sesame-rio-api:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-datatypes:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-turtle:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-ntriples:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-n3:pom:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio:pom:2.7.12:compile
[INFO] \- commons-cli:commons-cli:jar:1.2:compile
答案 0 :(得分:10)
从您的考虑开始我找到了一个解决方案,用于构建我的应用程序的胖罐,包括芝麻。我不得不使用另一个maven插件,它是阴影,我的构建配置如下:
<build>
<plugins>
<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>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>my.package.main.MyMain</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
最有趣的部分是:
希望它有所帮助。 干杯, 的Riccardo
答案 1 :(得分:3)
问题是您正在错误地重新包装芝麻罐。 Maven的jar-with-dependencies
目标解包第三方罐子,将内容放入一个大项目罐子里。那不会与芝麻图书馆一起工作 - 你需要原始的罐子,META-INF/services/
dirs就位。
更新您可以使用Maven Shade plugin来处理“{3}},而不是使用带有依赖关系的jar”生成onejar正确合并META-INF/services
目录。