【问题标题】:Build path is incomplete. Cannot find class file for javax/servlet/ServletContext构建路径不完整。找不到 javax/servlet/ServletContext 的类文件
【发布时间】:2013-05-16 01:18:32
【问题描述】:

对 java 很陌生。从事 CRUD hibernate spring 项目(sts)。配置 xml 文件时,我收到错误“构建路径不完整。找不到 javax/servlet/ServletContext 的类文件”,由 thebean id="viewResolver" 提供。我如何把它放在构建路径上。干杯。

<context:annotation-config />
<context:component-scan base-package="com.ger" />   


<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
    p:location="/WEB-INF/jdbc.properties" />

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
    p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" />
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation">
        <value>classpath:hibernate.cfg.xml</value>
    </property>
    <property name="configurationClass">
        <value>org.hibernate.cfg.AnnotationConfiguration</value>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${jdbc.dialect}</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property> 
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>
<tx:annotation-driven />
<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean> 

【问题讨论】:

标签: java spring hibernate


【解决方案1】:

应用程序似乎缺少来自servlet-api.jarjsp-api.jarel-api.jarj2ee.jarjavaee.jar 的 jar 之一。而且您不需要将它们复制并粘贴到类路径中。当应用程序部署在服务器上时,您将获得这些。首先,您应该永远不要手动复制/下载/移动/包含各个 servletcontainer 特定的库。

如果您从 IDE 运行此项目,请检查您的服务器配置。

【讨论】:

    【解决方案2】:

    问题在于 Eclipse 中的 JIT 与 Java JDK 的工作方式不同,Java JDK 可以在命令行上使用类似 Maven 的东西。要解决此问题,只需将以下内容添加到您的 pom.xml 文件中。

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    

    【讨论】:

      【解决方案3】:
      • Windows 8.1、Maven 3.2.3
      • Spring STS 3.6.3.SR1
      • Eclipse m2e 1.5.1.20150109 的 Maven 集成
      • Spring IDE 插件 3.6.3.201411271034-RELEASE 等

      有几天类似的问题。它说打开的依赖项目(但它们存在)中缺少一些类,这是一个 Spring AOP 插件(?)问题。关闭项目时,可以在 Maven 存储库中正确看到依赖项。从命令行执行 maven 构建时,仅在 STS 中未观察到此问题。

      我尝试了各种方法。其中一个似乎可行的方法是使用 Spring Config Editor 打开 applicationcontext.xml 文件,转到 Namespaces 选项卡,unselect 上下文命名空间,保存(也许做一些清理),然后选择上下文命名空间,再次保存。祈祷或跳舞你最喜欢的雨舞也应该有帮助:) 我看到此错误的行是:

      <context:component-scan base-package="aaa.bbb" />
      

      【讨论】:

        【解决方案4】:

        对于 WAR 项目,当您没有将 *.war 文件移动到部署文件夹中时,这是一个常见错误......显然服务器找不到它不知道的东西。

        如果您使用的是基于 Eclipse 的 IDE,只需在“服务器”选项卡中右键单击要部署到的服务器,然后选择“添加和删除”,然后将 .war 文件移动到部署文件夹中。重新启动服务器并导航到 URL 以查看是否可以解决问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-09
          • 2017-05-10
          • 1970-01-01
          • 1970-01-01
          • 2012-04-27
          • 1970-01-01
          • 2016-05-27
          • 1970-01-01
          相关资源
          最近更新 更多