0

I'm trying to code a program that will trade stocks in a sandbox environment with the E*Trade API. I am using their sample code as a guideline and currently am getting an issue with the .getAuthorizeURL() method. It says that it is undefined for type String however, after decompiling the OAuth jar I am stuck in a rut about how to solve this issue.

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;
    }
}

Stack Trace

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
Frodgers
  • 95
  • 2
  • 12

1 Answers1

1

You need to configure your build path to include the Apache log4j logger (org/apache/log4j/Logger) in your external JARs. It's use is buried down in the ETRADE code.

What are you editing your code in? It should be easy to find instructions for your development environment. APACHE is free and you can download the JAR here: http://logging.apache.org/log4j/2.x/

Note the requirement from 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 To proceed with this tutorial, you must first have completed the installation of the E*TRADE Java SDK, including:

•Java 1.6 or later installed

•3rd-party jars installed

•E*TRADE Java SDK libraries in your CLASSPATH

You can get instructions for all of the jars here https://us.etrade.com/ctnt/dev-portal/getContent?contentUri=V0_Code-SDKGuides-Java

If you were using Eclipse IDE, for example, you can follow these instructions How to import a jar in Eclipse

Community
  • 1
  • 1
EngineerWithJava54321
  • 1,095
  • 2
  • 13
  • 18
  • I'm currently using eclipse. Thank you for your help and the download link. Edit: Thanks, you answered my question. I have all of the other 3rd party jars installed along with the E*Trade SDK. Must have just been careless and didn't install this one. – Frodgers Jul 22 '14 at 17:52