2016-06-03 9 views
0

In meinem SBT-Build-Dateien habe ich folgende Einträge haben:sbt Montage fehlende Klasse

libraryDependencies += "org.apache.httpcomponents" % "httpcore" % "4.4.4" 

libraryDependencies += "org.apache.httpcomponents" % "httpclient" % "4.5.2" 

In meinem Code verwende ich:

import org.apache.http.client.methods.HttpGet 
import org.apache.http.impl.client.HttpClientBuilder 

val httpClient = HttpClientBuilder.create().build(); 

val httpGet = new HttpGet(url) 

Als ich das auf meinem Rechner laufen, es funktioniert. Aber wenn ich die JAR-Datei (sbt assembly) auf eine andere Maschine bereitstellen erhalte ich:

java.lang.NoClassDefFoundError: org/apache/http/impl/client/HttpClientBuilder 

Wenn Entpacken Sie die JAR-Datei, gibt es in der Tat keine HttpClientBuilder Klasse drin.

+0

Wenn Sie möchten, dass Ihre JARs mit Ihrer Anwendung gepackt werden, sollten Sie ein Fat JAR mit 'sbt-assembly' machen. – meucaa

+0

Ich benutzte Assemble, wie im Titel der Frage angegeben – Havnar

Antwort

0

Es scheint, dass tief in meiner Klasse gibt es einen Verweis auf eine depricated Methode war, dass aus irgendeinem Grund fand es nicht in das Fettglas.

Wechsel

httpClient.getConnectionManager().shutdown() 

zu

httpClient.close(); 

dieses Problem behoben.

Es war nicht sbt verwandt, sondern etwas mit der Java-Bibliothek selbst zu tun.