2014-06-30 13 views
8

Bazı bağımlılıkları olan bir java uygulamasına sahibim. Ben Netbeans veya mvn exec iyi ama ile çalıştırmak zaman ben çalışma zamanında, başarıyla inşa edilmiştir rağmen bunu paketlemek çalıştığımda aşağıdaki hatayı alıyorum:Bağımlılık bağımlılıkları dahil değildir

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) 

yüzden sorun susam rio olmasıdır onları benim maven depomuzda görebilmem bile ayrıştırıcılar dahil edilmiyor gibi görünüyor. Tüm bağımlılıkları dahil edilen projeye dahil ediyorum. Ayrıca bunları hariç tutmaya çalıştım ve bunları ana projeme açıkça ekledim ve yine başarısız oldu.

Herhangi bir öneriniz var mı?

benim bağımlılıkları ağacı:

[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

belki fabrika eksik isteğe bağlı bir bağımlılık ve kapsam çalışma zamanını sahip bağımlılıkları birinde bulunan şudur: org.openrdf.sesame: susam-queryparser-serql: kavanoz: 2.7.12: Çalışma zamanı - genellikle IDE en Sınıf kavanozuna eklemek için hangi kavanozların ayrıldığını ayırt edemezsiniz - sadece güvenli olmaları için hepsini eklerler. Bu fabrika hangi kavanozda? Ve dağıtımdaki kavanoz mu? – wemu

+0

Nasıl paketlersiniz? Orijinal kavanozları sağlam mı bırakırsın? Sorduğumun nedeni, Susam'ın ayrıştırıcıları için SPI ve ServiceLoader kullanmasıdır. Bu, kavanozda bulunması gereken belirli meta verilerin olmasını gerektirir. –

+0

Wemu sorunuzu cevaplarsa, maven-assembly eklentisini jar-with-dependencies ile kullanıyorum. Özellikle kavanozları değiştirmek için hiçbir şey yapmıyorum. Eklentileri sadece pom dosyama ekliyorum. Kavanoz dosyanızda aşağıdakileri görüyorum, bu yüzden bağımlılığın (iyi) dahil edildiğini varsayalım: org/openrdf/rio/turtle/ org/openrdf/rio/turtle/TurtleParser.sınıf org/openrdf/rio/kaplumbağa/TurtleParserFactory.class .... INF/maven/org.openrdf.sesame/susam-rio-kaplumbağa/ INF/maven/org.openrdf.sesame/susam-Rio- kaplumbağa/pom.xml INF/maven/org.openrdf.sesame/susam-rio-kaplumbağa/pom.properties – user3732870

cevap

10

Düşüncelerinizden hareketle Susam dahil olmak üzere uygulamamın bir yağ küpü oluşturmak için bir çözüm buldum.

<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> 

en ilginç parçalardır:

  • mainClass elemanı: Ana
  • belirtmek için başka bir maven plugin, gölge ve aşağıdaki gibi benim yapı için yapılandırma kullanmak zorunda ServicesResourceTransformer: Sorunumuzun özü olan META-INF/services/dir olan susam ile.

Umarım yardımcı olur: jar (http://zhentao-li.blogspot.it/2012/06/maven-shade-plugin-invalid-signature.html hakkında daha fazla ayrıntı) imzalamak için: Bu trafo

  • filtreleri (http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer açıklandığı daha iyi gibi) dependancies.Among hizmetleri META-INF birleştirme yardımcı olur. Alkış, Riccardo

  • +2

    Benim için de bir çekicilik gibi çalışıyor, çözümü paylaştığınız için çok teşekkürler! – user3732870

    +0

    Sadece bu çözümü bulduğunuzu farkettim, farkında olmadan önce kendi yanıtımı güncelledim. Önce oraya gitmek için +1 (ve gerekli olan gerçek yapılandırmayı gösterir). –

    3

    sorun yanlış Susam kavanoz ambalajladığını olmasıdır. Maven'in jar-with-dependencies hedefi, içeriği tek bir büyük proje kavanozuna koymak için üçüncü taraf kavanozlarını paketlerinden çıkarır. Bu, Susam kitaplıkları ile çalışmaz - orijinal kavanozları yerinde META-INF/services/ dirs ile sağlam gerekir. yerine 'kavanoz-ile-bağımlılıkları' olan bir onejar üretme

    Update doğru META-INF/services dizinleri birleştirme başa specific config options sahiptir Maven Shade plugin kullanabilirsiniz.

    +0

    Bu nasıl, Susam ile çalışmaz, yani, hangi açıdan farklıdır? –

    +0

    Ayrıca, yeniden paketleme yapmadan bunu nasıl yapacağınızı biliyor musunuz? Susam kullanan bir proje için tek bir kavanoz oluşturmak mümkün mü? Biri META-INF/services/'klasörünü el ile eklemeli mi? –

    +2

    Bu, Susam'a özgü değildir - kavanoz yeniden paketleme, SPI/ServiceLoader işlevini kullanan _any_ java kitaplığı için düzgün çalışmaz. Sorun, SPI hizmeti kaydının META-INF/hizmetler klasöründeki bir metin dosyası aracılığıyla gerçekleşmesi ve bu metin dosyalarının yeniden paketleme işlemi sırasında kaybolmasıdır. Farklı kavanozlar aynı ada sahip dosyaları içerdiğinden, sadece dosyaları kopyalayamayacağınız için elle sabitleme mümkündür, ancak kolay değildir. Bunun yerine, içeriğini birleştirmeniz gerekiyor. –