E*Trade OAuth API(Java)有问题

E*Trade OAuth API(Java)有问题,java,oauth,etrade-api,Java,Oauth,Etrade Api,我正在尝试编写一个程序,该程序将在沙箱环境中使用E*TradeAPI进行股票交易。我正在使用他们的示例代码作为指导,目前在.getAuthorizationUrl()方法方面遇到了一个问题。它说类型字符串没有定义,但是,在反编译OAuth jar之后,我陷入了如何解决这个问题的常规 import com.etrade.etws.account.Account; import com.etrade.etws.account.AccountListResponse; import com.etrad

我正在尝试编写一个程序,该程序将在沙箱环境中使用E*TradeAPI进行股票交易。我正在使用他们的示例代码作为指导,目前在.getAuthorizationUrl()方法方面遇到了一个问题。它说类型字符串没有定义,但是,在反编译OAuth jar之后,我陷入了如何解决这个问题的常规

import com.etrade.etws.account.Account;
import com.etrade.etws.account.AccountListResponse;
import com.etrade.etws.oauth.sdk.client.IOAuthClient;
import com.etrade.etws.oauth.sdk.client.OAuthClientImpl;
import com.etrade.etws.oauth.sdk.common.Token;
import com.etrade.etws.sdk.client.ClientRequest;
import com.etrade.etws.sdk.client.Environment;
import com.etrade.etws.sdk.common.ETWSException;
import com.etrade.*;

import java.awt.Desktop;
import java.net.URI;
import java.*;
import java.io.IOException;

public class OAuth
{
    public static void main(String[] args) throws IOException, ETWSException
    {
        //Variables
        IOAuthClient client = null;
        ClientRequest request = null;
        Token token = null;
        String oauth_consumer_key = null; // Your consumer key
        String oauth_consumer_secret = null; // Your consumer secret
        String oauth_request_token = null; // Request token 
        String oauth_request_token_secret = null; // Request token secret

        client = OAuthClientImpl.getInstance(); // Instantiate IOAUthClient
        request = new ClientRequest(); // Instantiate ClientRequest
        request.setEnv(Environment.SANDBOX); // Use sandbox environment
        request.setConsumerKey(oauth_consumer_key); //Set consumer key
        request.setConsumerSecret(oauth_consumer_secret);
        token = client.getRequestToken(request); // Get request-token object

        oauth_request_token  = token.getToken(); // Get token string
        oauth_request_token_secret = token.getSecret(); // Get token secret
    }

    public String Verification(String client, ClientRequest request)
    { 
         String authorizeURL = null;
         authorizeURL = client.getAuthorizeUrl(request); // E*TRADE authorization URL
         URI uri = new java.net.URI(authorizeURL);
         Desktop desktop = Desktop.getDesktop();
         desktop.browse(uri);

         return authorizeURL;
    }
}
堆栈跟踪

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at com.etrade.etws.oauth.sdk.client.OAuthClientImpl.<init>(OAuthClientImpl.java:22)
    at com.etrade.etws.oauth.sdk.client.OAuthClientImpl.<clinit>(OAuthClientImpl.java:24)
    at OAuth.main(OAuth.java:29)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 3 more
线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/log4j/Logger 位于com.etrade.etws.oauth.sdk.client.oauthclientmpl.(OAuthclientmpl.java:22) 位于com.etrade.etws.oauth.sdk.client.oauthclientmpl.(OAuthclientmpl.java:24) 位于OAuth.main(OAuth.java:29) 原因:java.lang.ClassNotFoundException:org.apache.log4j.Logger 在java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在java.net.URLClassLoader$1.run(URLClassLoader.java:355) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:354) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:425) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 3个以上
您需要配置构建路径,以便在外部jar中包含apachelog4j记录器(org/Apache/log4j/logger)。它的用途隐藏在ETRADE代码中

你在用什么编辑你的代码?应该很容易找到适合您的开发环境的说明。APACHE是免费的,您可以在此处下载JAR:

请注意ETRADE()中的要求: Java SDK 要继续本教程,您必须首先完成E*TRADE Java SDK的安装,包括:

•已安装Java 1.6或更高版本

安装了第三方JAR

•E*TRADE类路径中的Java SDK库

你可以在这里得到所有罐子的使用说明


例如,如果您使用的是Eclipse IDE,则可以按照以下说明进行操作

显示您获得的确切错误消息,以及获取该消息的代码行。哦,对不起,确切的错误消息是第43行的“getAuthorizeUrl(ClientRequest)方法未定义类型字符串”。它在验证方法中。getAuthorizeUrl是否返回字符串?是的,我反编译时OAuth jar中的方法是“公共抽象字符串getAuthorizeUrl(ClientRequest paramClientRequest)抛出ETWSException;”我可以将其编辑到我的帖子中,如果这样可以更容易阅读的话。然后向我们展示整个堆栈跟踪。我目前正在使用eclipse。感谢您的帮助和下载链接。编辑:谢谢,你回答了我的问题。我已经安装了所有其他第三方JAR以及E*Trade SDK。一定是粗心大意,没有安装这个。