Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring HtmlUnit依赖项_Java_Spring_Maven_Htmlunit - Fatal编程技术网

Java Spring HtmlUnit依赖项

Java Spring HtmlUnit依赖项,java,spring,maven,htmlunit,Java,Spring,Maven,Htmlunit,我有一个带有HtmlUnit依赖项的Spring MVC应用程序。我在@Component类中使用HtmlUnit实用程序。问题是,在编译(root-cause java.lang.NoClassDefFoundError:org/apache/http/HttpEntity)之后,在浏览器启动(索引页)时,我会看到以下页面: > HTTP Status 500 - Servlet.init() for servlet mvc-dispatcher threw > exception

我有一个带有HtmlUnit依赖项的Spring MVC应用程序。我在@Component类中使用HtmlUnit实用程序。问题是,在编译(root-cause java.lang.NoClassDefFoundError:org/apache/http/HttpEntity)之后,在浏览器启动(索引页)时,我会看到以下页面:

> HTTP Status 500 - Servlet.init() for servlet mvc-dispatcher threw
> exception
type Exception report
message Servlet.init() for servlet mvc-dispatcher threw exception
description The server encountered an internal error that prevented it from fulfilling this request.
exception javax.servlet.ServletException: Servlet.init() for servlet mvc-dispatcher threw exception

root cause java.lang.NoClassDefFoundError: org/apache/http/HttpEntity
root cause java.lang.ClassNotFoundException: org.apache.http.HttpEntity


org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Class.java:2532)
    java.lang.Class.getDeclaredConstructors(Class.java:1901)
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:230)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:976)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:949)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)
我已经使用maven包含了所有需要的依赖项,下面是我的pom.xml

<dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
    <version>2.15</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.1</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.3.5</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.3.5</version>
</dependency>

net.sourceforge.htmlunit
htmlunit
2.15
org.apache.commons
commons-lang3
3.1
org.apache.httpcomponents
httpime
4.3.5
org.apache.httpcomponents
httpclient
4.3.5

如果我从类中删除@Component注释-应用程序在启动时不会失败,但在实际的控制器调用时会失败,而实际的控制器调用使用该类(内部带有HtmlUnit)-同样的错误。若我从控制器中删除使用HtmlUnit的类,那个么一切都很好。我还试着自己添加库,没有使用maven,这对以太没有帮助关于它的主要谜团是,我的类(使用HtmlUnit)在通常的控制台应用程序中完美地工作。所以我尝试了很多东西,但我仍然不明白这个问题的原因是什么,为什么它在Spring上不工作???也许它只适用于单线程应用程序?但是为什么会有ClassNotFoundException?

您如何运行此应用程序?您是否将其作为tomcat服务器中的war归档运行?如果是这样,war归档文件是否在/WEB-INF/lib文件夹中包含htmlunit依赖项?运行应用程序的运行时上下文显然与控制台应用程序的类路径不同

htmlunit依赖项应该位于/WEB-INF/lib下,或者位于服务器类路径中(但不建议使用后者)