开发者

The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved [duplicate]

This question already has answers here: How to install JSTL? The absolute uri: http://java.sun.com/jstl/core cannot be resolved (20 answers) Closed 7 years ago.

I picked up a newly created maven webapp project, and wants to do the simplest of the mvc application with it. my environment looks like so:

<artifactId>spring-core</artifactId>
        <artifactId>spring-test</artifactId>
        <artifactId>spring-beans</artifactId>
        <artifactId>spring-context</artifactId>
        <artifactId>spring-aop</artifactId>
        <artifactId>spring-context-support</artifactId>
        <artifactId>spring-tx</artifactId>
        <artifactId>spring-orm</artifactId>  
        <artifactId>spring-web</artifactId>
        <artifactId>spring-webmvc</artifactId>
        <artifactId>spring-asm</artifactId>
        <artifactId>log4j</artifactId>
        <artifactId>hibernate-core</artifactId>
        <artifactId>hibernate-cglib-repack</artifactId>
        <artifactId>hsqldb</artifactId>

        <!-- particular arears-->
         <dependency>
           <groupId>taglibs</groupId>
           <artifactId>standard</artifactId>
           <scope>provided</scope>
        </dependency>
        <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>servlet-api</artifactId>
           <scope>provided</scope>
        </dependency>
        <!-- -->

       <spring.version>3.0.5.RELEASE</spring.version>
       <hibernate.version>3.6.1.Final</hibernate.version>
       <hibernate-cglig-repack.version>2.1_3</hibernate-cglig-repack.version>
       <log4j.version>1.2.14</log4j.version>
       <javax-servlet-api.version>2.5</javax-servlet-api.version>
       <hsqldb.version>1.8.0.10</hsqldb.version>
       <mysql-connector.version>5.1.6</mysql-connector.version>
       <slf4j-log4j12.version>1.5.2</slf4j-log4j12.version>
       <slf4j-api.version>1.5.8</slf4j-api.version>
       <javaassist.version>3.7.ga</javaassist.version>
       <taglibs.version>1.1.2</taglibs.version>


        <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version&开发者_高级运维gt;2.1-beta-1</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
    <finalName>admin-webapp</finalName>
</build>
<profiles>
    <profile>
        <id>endorsed</id>
        <activation>
            <property>
                <name>sun.boot.class.path</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                    <configuration>
                        <!-- javaee6 contains upgrades of APIs contained within the JDK itself.
                             As such these need to be placed on the bootclasspath, rather than classpath of the
                             compiler.
                             If you don't make use of these new updated API, you can delete the profile.
                             On non-SUN jdk, you will need to create a similar profile for your jdk, with the similar property as sun.boot.class.path in Sun's JDK.-->
                        <compilerArguments>
                            <bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar${path.separator}${sun.boot.class.path}</bootclasspath>
                        </compilerArguments>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>javax</groupId>
                            <artifactId>javaee-endorsed-api</artifactId>
                            <version>6.0</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
    <tomcat.home>${env.CATALINA_HOME}</tomcat.home>
    <web.context>${project.artifactId}</web.context>
</properties>

my applicationContext is as simple as:

<context:component-scan base-package="com.personal.springtest.admin.webapp" />
<mvc:annotation-driven />

web.xml as simple as so:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 version="3.0">
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

<servlet>
    <servlet-name>iwadminservlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/project-admin-webapp-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

   <servlet-mapping>
    <servlet-name>iwadminservlet</servlet-name>
    <url-pattern>/</url-pattern>
   </servlet-mapping>
</web-app>

my controller is just like so:

@Controller
public class HomeController {

   @RequestMapping(value="/")
   public String Home(){
    System.out.print("THIS IS a demo mvc, i think i like it");
    // this is temporary, will use viewresolver when everything clears up
    return "/views/home.jsp";
   }

}

my view is:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"    "http://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>JSP Page</title>
   </head>
   <body>
      <h1>Hello World!</h1>
   </body>
</html>

the error I'm getting is

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

Question 1: i'm wondering if it's due to the versions I'm using, I think I've read something about supported version in tomcat, and the java ee version used.don't really get from that a way to fix my problem. How can I fix this?

Question 2: before this error I was having code 400 because I wasn't pointing it to views/home.jsp correctly but I did notice that when I run the app in netbeans, it opens the browser with the url: http://localhot:8080/ while i was expecting http://localhost:8080/admin-webapp/ admin-webapp being the name of my war. I believe this is a problem and would like to address it.


You need the JSTL implementation:

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

Or if you manually include the JSTL jar:

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


  1. Download both the JSTL API and JSTL implementation from here
  2. Add this directive: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

  3. Paste the JAR file in your WEB-INF/lib folder. This should work. (It worked for me.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜