title: ClassNotFoundException on org.apache.http.ssl.TrustStrategy
body: <p>I'm trying to run a plugin that makes HTTP/HTTPS POST requests. On it its declared the needed dependencies, that is <code>httpclient</code> and <code>httpcore</code>. I'm using versions 4.5.3 and 4.4.6 respectively. Although imported correctly all (I mean), I got this error on execution time:</p>
  
  <pre><code>Caused by: java.lang.NoClassDefFoundError: 
  org/apache/http/ssl/TrustStrategy
  25.06 19:59:12 [Server] INFO at 
  com.b5team.postrequest.Main.onCommand(Main.java:77) ~[?:?]
  25.06 19:59:12 [Server] INFO at 
  org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~
  [Spigot.jar:git-Spigot-3fb9445-6e3cec8]
  25.06 19:59:12 [Server] INFO ... 10 more
  25.06 19:59:12 [Server] INFO Caused by: 
  java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy
  </code></pre>
  
  <p>And here is my code:</p>
  
  <pre><code>package com.b5team.postrequest;
  
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.security.KeyManagementException;
  import java.security.KeyStoreException;
  import java.security.NoSuchAlgorithmException;
  import java.security.cert.CertificateException;
  import java.security.cert.X509Certificate;
  import java.util.ArrayList;
  import java.util.List;
  
  import javax.net.ssl.HostnameVerifier;
  import javax.net.ssl.SSLContext;
  
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.config.Registry;
  import org.apache.http.config.RegistryBuilder;
  import org.apache.http.conn.socket.ConnectionSocketFactory;
  import org.apache.http.conn.socket.PlainConnectionSocketFactory;
  import org.apache.http.conn.ssl.NoopHostnameVerifier;
  import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
  import org.apache.http.ssl.SSLContextBuilder;
  import org.apache.http.conn.ssl.TrustStrategy;
  import org.apache.http.impl.client.HttpClientBuilder;
  import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  import org.apache.http.message.BasicNameValuePair;
  
  public class SocketPOSTRequest {
  
      public void sendRequest(String myurl, String hash, String args[]) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, ClientProtocolException, IOException {
  
          HttpClientBuilder b = HttpClientBuilder.create();
  
          SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
  
              public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
                  return true;
              }
          }).build();
  
          b.setSSLContext(sslContext);
  
          HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
  
          SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
          Registry&lt;ConnectionSocketFactory&gt; socketFactoryRegistry = RegistryBuilder.&lt;ConnectionSocketFactory&gt; create()
                  .register("http", PlainConnectionSocketFactory.getSocketFactory())
                  .register("https", sslSocketFactory)
                  .build();
  
          PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
          b.setConnectionManager(connMgr);
  
          HttpClient client = b.build();
          HttpPost post = new HttpPost(myurl);
  
          List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;(args.length);
          params.add(new BasicNameValuePair("hash", hash));
  
          for(int i = 0; i &lt; args.length; i++) {
              params.add(new BasicNameValuePair("arg"+i, args[i]));
          }
  
          post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
          HttpResponse response = client.execute(post);
          HttpEntity entity = response.getEntity();
  
          if (entity != null) {
  
              InputStream in = entity.getContent();
              BufferedReader reader = new BufferedReader(new InputStreamReader(in));
              String line;
  
              System.out.println("[POSTRequest] Data sent successfully!");
  
              while ((line = reader.readLine()) != null) {
                  System.out.println("[POSTRequest] Report: "+line);
              }
          }
      }
  }
  </code></pre>
  
  <p><strong>EDIT:</strong> I'm using Ant to build, and the dependencies are correctly added. I tested too with Maven, adding the dependencies, but the error remains.</p>
  
  <p><strong>EDIT2:</strong> Switched to Maven, added maven-shade-plugin and maven-compile-plugin. The error disappeared, but now got this <code>java.lang.NoSuchMethodError: org.apache.http.impl.client.HttpClientBuilder.setSSLContext</code>. When running with junit, don't occurs any errors. It only occurs when running on server, that is Spigot 1.11.2 Minecraft Server.</p>