아파치 + 톰캣 연동하여 JSTL을 사용하는데..

firster의 이미지

제가 만든 커스텀 태그는 잘 돌아갑니다.

한데, JSTL을 사용하려는데, 튜트리얼처럼 해도 아래와 같은 메시지가 뜨는군요. 오늘 출근해서 지금까지 구글 및 검색사이트를 검색하여 보아도 '이거다'싶은 답을 찾을수가 없군요. temp 디렉토리를 만들라는 내용은 이미 봤고 그건 효과가 없다는 것을 미리 말씀드립니다.
아래는 에러 메시지입니다.

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

환경은 JDK1.403, 아파치 2.047, 톰캣 4.127입니다.
답변에 미리 감사드립니다.

- 글 추가합니다.
WEB-INF/web.xml, 관련 tld 및 jsp파일에 있는 uri가 상위 에러메시지의 ()안에 있는 것입니다. 다운받은 예제파일을 수정없이 하라는데로 한 것이 그 결과이구요. 검색 결과, 이와 같은 메시지로 고생하는 이가 몇몇 있던데 톰캣 버그니 OS를 바꿔서 깔아보라느니 등등 도움될만한 답변을 찾을수가 없군요.

freesoft의 이미지

직접 만든 건 잘 돌아간다고 하니까 설정을 잘못했을경우가 맞을거 같군요.

대부분의 경우에 web.xml에서 설정한 내용과 실제 코드에서 호출하는
내용이 다른 경우가 많습니다.

이를테면.. JSTL의 소스코드에서

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>

등으로 사용하는데 이때 uri 의 값과 web.xml 의 값이 동일한지를
확인해보시기 바랍니다.

이게 아니라면 에러메세지 내용대로 web.xml 세팅은 올바로했지만
막상 JSTL의 jar파일을 복사해 넣지 않았거나 엉뚱한 곳에 복사하진
않으셨는지요?

혹은 해당 웹 애플리케이션의 WEB-INF에 web.xml을 넣지 않고 다른
웹 애플리케이션의 WEB-INF에 web.xml을 넣어놓은것은 아닌지요?

저도 jdk1.4.2에 Apache2, 그리고 톰캣4를 JK2모듈을 이용해서 연동해서
쓰고 있고, JSTL 도 잘 쓰고 있습니다. 한번 더 세팅들을 천천히 고쳐보시길...

firster의 이미지

WEB-INF/lib 디렉토리 밑에 아래와 같은 파일이 있었구요.
jstl.jar
standard.jar

이후에 다음과 같은 파일을 집어넣었습니다.
dom.jar
jaxen-full.jar
jaxp-api.jar
jdbc2_0-stdext.jar
sax.jar
saxpath.jar
xalan.jar
xercesImpl.jar

web.xml과 관련 jsp 파일의 uri 부분은 확실히 확인했습니다.
혹시라도 부족하게 있다면 '지도' 좀 해주세요.

freesoft의 이미지

<web-app>

......

<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>

</web-app>

이런식으로 되어어있는건가요?
taglib-uri 가 올바르다면 taglib-location 의 경로는 어떠한지요?

그리고 WEB-INF 아래에 c.tld, c-rt.tld, fmt.tld 등등의 tld 파일들도 다 올바른지요?

지적하신 WEB-INF는 어느 경로의 WEB-INF인지요? 그리고 그 경로가
$TOMCAT_HOME/conf의 server.xml 파일에 있는 Content 의
그것과 일치하는지요?

firster의 이미지

음..한동안 포기하고 있다가 오늘오후부터 키워드를 바꿔가며 검색을 하다가 아래와 같은 문구를 보았습니다.

change uri
  http://java.sun.com/jsp/jstl/core
  http://java.sun.com/jsp/jstl/fmt

jsp라는 단어가 들어가더군요.
설마했는데, 됩니다!!
근데, 이게 맞는 건가요? :(

freesoft의 이미지

된다면 맞는 것이겠지요.

web.xml 에서 지정한 uri 의 값과, jsp 파일에서 호출하는 jstl 의 uri 값이 동일해야 된다는 것이 핵심입니다.

적어놓은 uri로 부터 뭔가를 다운로드받아서 실행한다거나 하진 않으니깐요.

만약 web.xml 의 저 부분을 수정했는데 됐다면 분명히

<%@taglib prefix="c" uri= <- 이 부분도 아마 그렇게 되어 있을 겁니다.

firster의 이미지

꼬박 이틀을 낭비했다고 생각했는데 결국은 조금 이해가 되는군요.
단순히 jstl를 쓸 수 있어서 좋은 것이 아니라 뭔가를 알았다는 것이 또 이렇게 기쁠 줄이야.. :lol:
uri는 단순한 identifier일 뿐 그 이상은 아니라는 글을 어디선가 봤는데, 이제서야 그 의미를 알겠군요. 그런데, 굳이 http까지 붙여서 이렇게 헷갈리게 하다니..
WEB-INF/lib 폴더 아래에 있는 standard.jar 파일을 보니 jstl에 관련된 여러 tld파일들이 있습니다. 이것들은 자동으로 참조되니 web.xml 파일에서 굳이 tag-lib 태그를 사용하여 다시 uri를 지정할 필요가 없더군요.
다만 관련 jsp 파일의 uri 값을 jar안에 있는 tld 파일의 uri값과 동일하게만 쓰주면 됩니다. 즉, jar안의 tld 파일의 uri값과 jsp 파일의 uri값만 일치시킨다면 굳이 http://java.sun.com/jstl/core가 아닌 welcome.to.mywebsite.www.www.www의 값도 상관없습니다.
아울러, 굳이 tld 파일들을 jar에서 추출하여 다시 만들거나 카피할 필요도 없구요. 결국 제가 가진 WEB-INF/web.xml 파일에서 jstl 관련 태그는 없애버리고 밖으로 빼놓았던 관련 tld 파일들도 지워버렸습니다. 이미 jar 파일에서 참조되었기 때문이죠.
이렇게 간단한 원리를 이해하는데 이틀이나 걸렸지만( :oops: ) 그래도 기분은 좋습니 :P . 이런식으로 배워나가는거죠.
freesoft님께 감사드립니다.

익명 사용자의 이미지

정말 좋은 설명 감사드립니다.

익명 사용자의 이미지

잘 보고 갑니다~~

익명 사용자의 이미지

앗싸. 정말 감사합니다.

익명 사용자의 이미지

http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web-application/
한참 찾다가 대체 왜 안되지 ? 라는 의문으로 찾았습니다.

요약하면 sevlet 버전 마다 사용하는 jstl-*.*.jar 파일과 선언이 다름니다.

위와 같은 에러는 다른 버전의 jar 파일이 lib에 있거나 선언이 잘 못될 경우 발생 하는 에러입니다.
저도 로컬에서는 에러가 발생하지 않다가 linux 서버 쪽 에 deploy 하니 발생하더군요

tomcat 6 servlet 2.5 jstl-1.2.jar

선언
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

왜 로컬에서는 잘올라가는지 신기하군요 아시는분 답변 부탁드립니다.

로컬 윈도우7 tomcat 6 servlet 2.5 jstl.jar 를 사용할 경우 에러가 발생 하지 않았습니다.
linux 서버에서는 발생을 하고요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.