Java 为什么我的SalesForce.com-GoogleApp无法初始化com.sforce.ws.ConnectorConfig类?

Java 为什么我的SalesForce.com-GoogleApp无法初始化com.sforce.ws.ConnectorConfig类?,java,google-app-engine,exception,connection,salesforce,Java,Google App Engine,Exception,Connection,Salesforce,我目前正在编写一个名为SalesForce.com的教程 我已经安装了GoogleEclipse插件,下载了库并将它们安装到构建路径,然后输入了“HelloWorld应用程序”(如教程页面所示): 知道为什么没有进行初始化,出了什么问题,和/或如何修复它吗?您没有将WSC添加到Eclipse项目的类路径中。从您发布的教程中: 将Force.com Java库(wsc.jar+partner-library.jar或您的enterprise library.jar)添加到应用程序的WEB-INF

我目前正在编写一个名为SalesForce.com的教程

我已经安装了GoogleEclipse插件,下载了库并将它们安装到构建路径,然后输入了“HelloWorld应用程序”(如教程页面所示):


知道为什么没有进行初始化,出了什么问题,和/或如何修复它吗?

您没有将WSC添加到Eclipse项目的类路径中。从您发布的教程中:

  • 将Force.com Java库(wsc.jar+partner-library.jar或您的enterprise library.jar)添加到应用程序的WEB-INF/lib文件夹中
  • 右键单击新添加的库并选择“生成路径->添加到生成路径”

这些说明的唯一问题是,您应该使用wsc gae-*.jar,而不仅仅是普通的wsc.jar。

我也面临这个问题,即使您在项目构建路径中添加wsc.jar和enterprise.jar,它仍然会抛出“NoClassDefFoundError”。 但一旦我将这些JAR复制到WEB\u INF-->库中,它就会神奇地工作。 不知道为什么


请任何人解释一下为什么会发生这种情况。

对不起,我略为删节了我对所采取步骤的描述。我确实包含了所有类,并将它们添加到环境中。另外,我的path中有所有Google Force.com Web服务jar。NoClassDefFoundError肯定意味着在运行Jetty时,类路径上没有wsc.jar。您需要从WSDL和WSC本身生成的jar。@DanK-我添加了WSC-23.jar、enterprise.jar和WSC-23-min.jar,但仍然存在错误。有时它在ConnectorConfig上抛出错误,有时在Connector上抛出错误。不知道出了什么问题。
package com.force;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.*;
import java.util.logging.*;

import com.sforce.ws.*;
import com.sforce.soap.partner.*;
import com.sforce.soap.partner.sobject.SObject;


@SuppressWarnings("serial")
public class HelloWorldServlet extends HttpServlet {
    private static final Logger log = Logger.getLogger(HelloWorldServlet.class.getName());

    private String username = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    private String password = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    private PartnerConnection connection;

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.setContentType("text/html");
        resp.getWriter().println("Hello, world. this is a test2");

        PrintWriter t = resp.getWriter();
        getConnection( t, req);
        if ( connection == null ) { return; }

        QueryResult result = null;

        try {

            result = connection.query(  "select id, name, phone from Account order by LastModifiedDate desc limit 10 ");

        } catch (ConnectionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for (SObject account : result.getRecords()) {
             t.println("<li>"+ (String)account.getField("Name") + "</li>");
        }
    }

    void getConnection(PrintWriter out, HttpServletRequest req)  { 

        try { 
            // build up a ConnectorConfig from a sid
            String sessionid = req.getParameter("sid");
            String serverurl = req.getParameter("srv");

            if ( connection == null ) { 

               out.println("<p>new connection needed</p>");
               // login to the Force.com Platform
               ConnectorConfig config = new ConnectorConfig();
               if ( sessionid != null && serverurl != null) {
                   config.setServiceEndpoint(serverurl);
                   config.setSessionId(sessionid);
                   config.setManualLogin(false);
                   out.println("using session from query string");
               }   else { 
                   config.setUsername(username);
                   config.setPassword(password);
               }
               connection = Connector.newConnection(config);
               out.println( connection.getConfig().getSessionId() );
               out.println( connection.getConfig().getServiceEndpoint() );
           } else { 
               out.println("<p> reuse existing connection"); 
               out.println( connection.getConfig().getSessionId() );
           }
           log.warning("Connection SID " +connection.getConfig().getSessionId());

        } catch ( ConnectionException ce) {
            log.warning("ConnectionException " +ce.getMessage());

            out.println( ce.getMessage() + " s " + ce.getClass() );

        }

    }
}
    HTTP ERROR 500

Problem accessing /sfdc_gae_tutorials/hello2. Reason:

    Could not initialize class com.sforce.ws.ConnectorConfig
Caused by:

java.lang.NoClassDefFoundError: Could not initialize class com.sforce.ws.ConnectorConfig
    at hu.flux.salesforce.hello.HelloWorld2Servlet.getConnection(HelloWorld2Servlet.java:57)
    at hu.flux.salesforce.hello.HelloWorld2Servlet.doGet(HelloWorld2Servlet.java:28)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Powered by Jetty://