java - 放置 JSTL 依赖项时出现 Tomcat 错误。使用 Maven

标签 java maven tomcat jstl

错误很简单:首先我遇到了经典错误,当我尝试通过浏览器访问该页面时:

An Error Occurred:
javax/servlet/jsp/jstl/core/Config
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:344)

首先想到的是 JSTL jar,他们将代码放在 pom.xml 中:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>

之后我得到那个错误,我不能再启动 Tomcat

GRAVE: A child container failed during start
java.util.concurrent.ExecutionException:      org.apache.catalina.LifecycleException:
Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/financeiro]]

如果从 pom.xml 中删除 depedency,我可以再次启动 tomcat,但如果这样做,将获取 javax/servlet/jsp/jSTL/core/Config 尝试访问页面时出错

我的 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>javaparaweb</groupId>
  <artifactId>financeiro</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>Financeiro</name>
  <description>Gerenciamento Financeiro Pessoal</description>
  
  <repositories>
    <repository>
        <id>jvnet-nexus-releases</id>
        <name>jvnet-nexus-releases</name>
        <url>https://maven.java.net/content/repositories/releases/</url>
    </repository>
  </repositories>
  
  <dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
    
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.2.10</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.1.0.Final</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
        
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>
        
</dependencies>
  
  
  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
  </build>
  
</project>

web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         version="2.5"> 
  <display-name>financeiro</display-name>
  

 <welcome-file-list>
    <welcome-file>index.jsf</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
 </welcome-file-list>
  
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

 <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>
  
  
 
  
</web-app>
   

最佳答案

看来您在远程存储库中的位置有误。如果您无法更改 pom.xml 中的位置您可以使用以下 link弄清楚如何将 jar 安装到本地存储库中。您还删除了 <repository>来自项目的 pom.xml 的标签.

中央 Maven 存储库 URL http://repo1.maven.org/您可以在哪里下载所需的 jar。

关于java - 放置 JSTL 依赖项时出现 Tomcat 错误。使用 Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792889/

相关文章:

java - 如何判断 JPA 保存方法采取了什么操作

java - 同步局部变量

java - Tomcat 和 STS 上的 Spring Web MVC - 请求的资源不可用

java - 将 -javaagent 添加到 Tomcat 6 服务器,我应该将它放在哪里以及采用什么格式?

Java Spring Security - 授权问题

java - 以下代码的类似代码是什么?

java.lang.ClassNotFoundException : org. Threeten.bp.temporal.TemporalAccessor

在 nexus 中找不到 maven-metadata.xml

maven - 如何在 SonarQube 中使用增量模式?

validation - 在 Web 应用程序中验证 FirstName