2013-05-21 47 views
1

我试图以自下而上的方式实现Web服务。首先,我创建了一个动态Web项目并实现了一个使用硒的功能。然后,我将selenium-server-standalone-3.23.0.jar添加到项目的构建路径中。然后我将同样的jar文件添加到部署程序集。然后我使用Web服务向导来生成Web服务器和客户端。从那以后,我添加了相同的硒jar文件到服务器的WEB-INF/lib文件夹,并试图运行函数,该函数返回此异常:Web服务中的Selenium - jar not loaded

java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 
at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:177) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160) 
at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:142) 
at org.apache.axis.utils.cache.ClassCache.lookup(ClassCache.java:85) 
at org.apache.axis.providers.java.JavaProvider.getServiceClass(JavaProvider.java:428) 
at org.apache.axis.providers.java.JavaProvider.initServiceDesc(JavaProvider.java:461) 
at org.apache.axis.handlers.soap.SOAPService.getInitializedServiceDesc(SOAPService.java:286) 
at org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:500) 
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274) 
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260) 
at org.apache.axis.deployment.wsdd.WSDDDeployment.getService(WSDDDeployment.java:427) 
at org.apache.axis.configuration.FileProvider.getService(FileProvider.java:231) 
at org.apache.axis.AxisEngine.getService(AxisEngine.java:311) 
at org.apache.axis.MessageContext.setTargetService(MessageContext.java:756) 
at org.apache.axis.handlers.http.URLMapper.invoke(URLMapper.java:50) 
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:239) 
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
... 42 more 

然后我看了一下控制台,看到它说:

May 21, 2013 8:45:09 PM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(C:\EclipseWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\sonkezeko3\WEB-INF\lib\selenium-server-standalone-2.32.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 

这是什么原因造成的?我应该使用其他一些jar文件吗?服务器的代码如下:

package test.sonkezeko3; 

import org.openqa.selenium.By; 
import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.ExpectedCondition; 
import org.openqa.selenium.support.ui.Wait; 
import org.openqa.selenium.support.ui.WebDriverWait; 

public class sonkezeko3 { 
public String Ekobilet(String from, String to, String date) { 

    //Firefox browser instantiation 
    WebDriver driver = new FirefoxDriver(); 

    //Loading the URL 
    driver.get("http://www.amadeusepower.com/trek/portals/trek/default.aspx?Culture=en-US"); 


    WebElement radioOneway = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_rbFlightType_1")); 
    radioOneway.click(); 

    waitForPageLoaded(driver); 


    WebElement fromText = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_txtSearch_txtFrom")); 
    fromText.clear(); 
    fromText.sendKeys(from); 


    WebElement toText = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_txtSearch_txtTo")); 
    toText.sendKeys(to); 


    WebElement dateText = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_txtDepartureDate_txtDate")); 
    dateText.clear(); 
    dateText.sendKeys(date); 

    //Sign in button identification and click it 
    WebElement searchbutton = driver.findElement(By.id("ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_btnSearch")); 
    searchbutton.click(); 

    String page = driver.getPageSource(); 

    //Closing the browser 
    driver.close(); 

    return page; 

    } 

    public static void waitForPageLoaded(WebDriver driver) { 

     ExpectedCondition<Boolean> expectation = new 
    ExpectedCondition<Boolean>() { 
      public Boolean apply(WebDriver driver) { 
      return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete"); 
      } 
     }; 

     Wait<WebDriver> wait = new WebDriverWait(driver,30); 
     try { 
       wait.until(expectation); 
     } catch(Throwable error) { 
       System.out.println("exception yavrum"); 
     } 
    } 

} 
+0

没有答案?没有人知道这个原因?或者这个问题有什么不清楚的地方? – ManahManah

+0

你能解决吗? –

回答

0

尽量避免使用独立的罐子,而使用selenium-java-2.37.0.jar和尝试。它为我工作。请仅将lib文件夹保存在WEB-INF之内。

相关问题