我试图编写一个程序,用E * Trade API在沙箱环境中交易股票。我使用他们的示例代码作为指导,目前我遇到了.getAuthorizeURL()方法的问题。它说它没有为String类型定义,但是在反编译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
答案 0 :(得分:1)
您需要配置构建路径,以在外部JAR中包含Apache log4j logger(org / apache / log4j / Logger)。它的使用被埋没在ETRADE代码中。
您在编辑代码的是什么?应该很容易找到适合您的开发环境的说明。 APACHE是免费的,你可以在这里下载JAR:http://logging.apache.org/log4j/2.x/
请注意ETRADE(https://us.etrade.com/ctnt/dev-portal/getContent?contentUri=V0_Code-Tutorialhttps://us.etrade.com/ctnt/dev-portal/getContent?contentUri=V0_Code-Tutorial)的要求: Java SDK 要继续本教程,您必须首先完成E * TRADE Java SDK的安装,包括:
•安装了Java 1.6或更高版本
•已安装第三方jar
•CLASSPATH中的E * TRADE Java SDK库
您可以在https://us.etrade.com/ctnt/dev-portal/getContent?contentUri=V0_Code-SDKGuides-Java
获取所有广告罐的说明例如,如果您使用的是Eclipse IDE,则可以按照这些说明How to import a jar in Eclipse
进行操作