0

我正在研究eclipse中的一个简单的java应用程序,它将在btc-e.com上为我做一笔交易。我刚刚写了一个交易方法,这是一堆编译时错误。我使用Apache httpcore和httpclient。我似乎无法弄清楚为什么它不起作用。我非常感谢任何帮助;我现在很困惑。 这些是我包括在构建路径的JAR文件:java btc贸易应用程序编译时错误(HTTP组件)

  • 的HttpCore-4.4.1.jar
  • 的HttpClient-4.5.jar

这是代码:

import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import java.util.Calendar; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Map; 

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.*; 
import org.apache.http.impl.client.DefaultHttpClient; 



public class Trade { 


public static void buy(double rate, double amount) throws ClientProtocolException, IOException{ 

    Calendar now = Calendar.getInstance(); 
    long nonce = (now.getTimeInMillis()/1000); 
    String api_key= "00000000-00000000-00000000-00000000-00000000"; 
    String api_secret = "---------------------------------------"; 


    //Create a new HttpClient and Post Header 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("https://btc-e.com/tapi"); 

    // Add data 
    HashMap params = new HashMap(); 
    params.put("method", "Trade"); 
    params.put("pair", "btc_usd"); 
    params.put("type", "buy"); 
    params.put("rate", rate); 
    params.put("amount", amount); 
    params.put("nonce", nonce); 


    HashMap headers = new HashMap(); 
    headers.put("Contnent-type", "x-www-form-urlencoded"); 
    headers.put("key", api_key); 
    headers.put("sign", api_secret); 

    try { 
     httppost.setEntity(new UrlEncodedFormEntity((List<NameValuePair>) params)); 
     // Execute HTTP Post Request 
     HttpResponse response = client.execute(httppost); 





    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 







} 

这里是编译时错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.apache.http.impl.client.CloseableHttpClient.(CloseableHttpClient.java:58) at org.apache.http.impl.client.AbstractHttpClient.(AbstractHttpClient.java:287) at org.apache.http.impl.client.DefaultHttpClient.(DefaultHttpClient.java:147) at Trade.buy(Trade.java:31) at Main.main(Main.java:10) Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 5 more

回答

0

您还需要包含Apache Commons Logging,看起来像这是httpclient的传递依赖项。从长远来看,您可能希望使用依赖管理工具(如Maven!)来处理这类事情 - 以及处理这种依赖性问题,它将使您的构建更稳定并且可以重复使用,而无需手动添加JAR。