2011-01-24 48 views
0

我目前正在题为SalesForce.com教程Force.com for Google App Engine for Java: Getting Started为什么我的SalesForce.com-GoogleApp无法初始化com.sforce.ws.ConnectorConfig类?

我已经安装了谷歌Eclipse插件,下载库,并将其安装到构建路径,并进入的“Hello World应用程序”(如图

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()); 

     } 

    } 
} 

当我运行该应用程序为“Web应用程序”我得到了在我的网页浏览器下:本教程页)

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:// 

任何想法,为什么初始化没有采取地点,发生了什么问题,和/或如何解决它?

回答

1

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

  • 添加Force.com的Java库(wsc.jar +合作伙伴library.jar或您的企业,library.jar)应用程序的WEB-INF/lib文件夹
  • 右键单击新添加的库并选择“构建路径 - >添加到构建路径”

这些指令的唯一问题是您应该使用wsc-gae - *。jar,而不仅仅是常规wsc 。罐。

+0

对不起,我略有删节我的我采取的步骤的描述。我确实包括了所有的课程并将它们添加到环境中。另外,我实际上拥有所有Google Force.com Web服务的jar包。 –

+0

NoClassDefFoundError肯定意味着当您运行Jetty时,您的类路径中没有wsc.jar。您需要从WSDL生成的jar和WSC本身。 –

+0

@DanK - 我添加了wsc-23.jar,enterprice.jar和wsc-23-min.jar,但仍然是错误。有时它会在ConnectorConfig上,有时在连接器上抛出错误。不知道什么是错误的。 – Braj

0

我太所面临的问题沉绵如果添加wsc.jar和enterprise.jar项目构建路径,它仍然抛出“NoClassDefFoundError错误”。 但是,一旦我将这些JAR复制到WEB_INF - > lib中,它就会神奇地起作用。 不知道为什么。

有人请解释为什么会发生。

相关问题