﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-邋遢居-随笔分类-OSGI</title><link>http://www.blogjava.net/JetGeng/category/30099.html</link><description>我的Java天堂</description><language>zh-cn</language><lastBuildDate>Sat, 23 Jul 2011 17:20:04 GMT</lastBuildDate><pubDate>Sat, 23 Jul 2011 17:20:04 GMT</pubDate><ttl>60</ttl><item><title>Gemini测试小工具</title><link>http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html</link><dc:creator>Jet Geng</dc:creator><author>Jet Geng</author><pubDate>Thu, 21 Jul 2011 17:01:00 GMT</pubDate><guid>http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html</guid><wfw:comment>http://www.blogjava.net/JetGeng/comments/354828.html</wfw:comment><comments>http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JetGeng/comments/commentRss/354828.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JetGeng/services/trackbacks/354828.html</trackback:ping><description><![CDATA[<br />
<div class="body">
<div id="gemini" class="section">
<h1>Gemini测试小工具<a title="永久链接至标题" href="#gemini" class="headerlink">&#182;</a></h1>
<table rules="none" frame="void" class="docutils field-list">
     <colgroup><col class="field-name">
     <col class="field-body">
     </colgroup>
     <tbody valign="top">
         <tr class="field">
             <th class="field-name">作 者:</th>
             <td class="field-body">Jet Geng</td>
         </tr>
         <tr class="field">
             <th class="field-name">日 期:</th>
             <td class="field-body">2011-07-22</td>
         </tr>
     </tbody>
</table>
<div id="id1" class="section">
<h2>概述<a title="永久链接至标题" href="#id1" class="headerlink">&#182;</a></h2>
<p>在 <em>Blueprint</em> 起步中我们已经成功的通过 <em>Blueprint</em> 容器创建了一个POJO。我们只是通过log的方式查看到我们的POJO已经被创建了。无法深入的去了解容器内部Bean的运行状态和行为。
所以才有必要创建一个Gemini控制台这样的程序。这个控制台最初的需求是：</p>
<blockquote>
<div>
<ul class="simple">
     <li>能够动态查看特定的Bean是否被创建。</li>
     <li>能够动态的获取特定的Bean。</li>
     <li>能够检查特定Bean的行为是否正确。</li>
</ul>
</div>
</blockquote>
</div>
<div id="id2" class="section">
<h2>解决方案<a title="永久链接至标题" href="#id2" class="headerlink">&#182;</a></h2>
<dl class="docutils">
<dt>为了解决以上的问题。我做了一个小工具。 这个小工具的目的让客户的动态脚本能在最终的目标环境中运行。使用方式如下：</dt>
<dd>
<ol class="first last arabic simple">
     <li>从 git://github.com/jetgeng/OSGi.git 下载 <strong>org.gunn.gemini.console</strong> 和 <strong>org.codehaus.groovy</strong> 这两个项目。</li>
     <li>并把这两项目加入到你的TargetPlatform中。</li>
     <li>使用 <strong>invokegv</strong> 来运行groovy脚本。
     <ol class="arabic">
         <li>直接在命令行输入脚本。例如： <tt class="docutils literal"><span class="pre">invokegv</span> <span class="pre">print</span> <span class="pre">act.getBean(''myPOJO'')</span></tt></li>
         <li>通过输入Groovy文件。例如： <tt class="docutils literal"><span class="pre">invokegv</span> <span class="pre">file:///Users/Puer/.../script.groovy</span></tt></li>
     </ol>
     </li>
</ol>
</dd>
</dl>
<div class="admonition note">
<p class="first admonition-title">注解</p>
<p class="last">在Groovy脚本中有一个内建的变量 <strong>act</strong> ， 他又一个叫做 <strong>getBean</strong> 的方法。通过这个方法你可以获得当前 <strong>OSGi</strong> 平台中所有的BlueprintContainer中的组件。他的输入参数时Bean或Service的id。
如果是使用Groovy文件的形式，注意文件的url格式。他是通过如下的正则表达式 <tt class="docutils literal"><span class="pre">file:\\/{2}(\\/[:\\w\\.]+)+</span></tt> 进行验证的。并且路径中暂时不支持中文。</p>
</div>
<p>这个周末(23或24日)完成一个简单的录屏，来演示这个小工具的使用。</p>
</div>
</div>
</div>
<img src ="http://www.blogjava.net/JetGeng/aggbug/354828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JetGeng/" target="_blank">Jet Geng</a> 2011-07-22 01:01 <a href="http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Blueprint 使用手记</title><link>http://www.blogjava.net/JetGeng/archive/2011/07/10/354034.html</link><dc:creator>Jet Geng</dc:creator><author>Jet Geng</author><pubDate>Sun, 10 Jul 2011 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/JetGeng/archive/2011/07/10/354034.html</guid><wfw:comment>http://www.blogjava.net/JetGeng/comments/354034.html</wfw:comment><comments>http://www.blogjava.net/JetGeng/archive/2011/07/10/354034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JetGeng/comments/commentRss/354034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JetGeng/services/trackbacks/354034.html</trackback:ping><description><![CDATA[1 概述<br />
Blueprint 使用手记 Jet Geng<br />
July 10, 2011<br />
Blueprint 是 OSGi Service Platform Enterprise Specification 标准的一 部分。很多最佳实践中也都推荐在应用程序中使用他。最近在项目中用他 来发布和应用服务。感觉效果不错。所以就有了这篇使用手记!欢迎各位 看官拍砖!<br />
2 配置环境<br />
我们在前期找到了两个 Blueprint 的实现:一个是 Apache 的 aries,另 外一个就是 Eclipse 的 Gemini。最后选择了 Gemini。做出这样的决定出于 两点考虑:<br />
&#8226; Blueprint的标准就是由Spring提出。<br />
&#8226; Gemini的初始代码由Srping所捐献。 下面我就简单介绍一下环境的配置过程:<br />
&#8226; 从http://eclipse.org/gemini/ 下载 Gemini 的合适的版本。我们 采用的是 1.0.0M1。并解压到路径 A<br />
&#8226; 从http://static.springsource.org/downloads/nightly/milestone-download. php下载 spring-osgi-2.0.0.M1-with-dependencies。并解压到路径 B。 他里面包括了 Gemini 所依赖的 bundle。说白了也就是 SpringFrame- work。<br />
&#8226; Eclipse 中新建一个 Target Platform。把上述的路径 A和 B 加入到新 建的 Target Platform 中去。<br />
&#8226; 选择新建的 Target Platform 为当前活动的 Platform。 3 启航<br />
个人理解 Gemini 就是 OSGi 世界中的 IOC。既然是一个 IOC 框架,那 我们就从创建一个 Bean 开始吧!<br />
<br />
3.1&nbsp;&nbsp;&nbsp; 创建一个 Bean 首先我们来看一下我们要存入 Container 中的 POJO。<br />
Listing 1: POJOWillInContainer.java<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;org.gunn.gemini.demo;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.slf4j.Logger;&nbsp;</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.slf4j.LoggerFactory;&nbsp;</span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />
*&nbsp;This&nbsp;pojo&nbsp;will&nbsp;create&nbsp;by&nbsp;blueprint&nbsp;container&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;Jet&nbsp;Geng&nbsp;*&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;POJOWillInContainer&nbsp;{&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Logger&nbsp;logger&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; "><br />
}<br />
LoggerFactory.getLogger(POJOWillInContainer.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">);&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;name&nbsp;;<br />
</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;age;<br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setName(String&nbsp;name)&nbsp;{&nbsp;logger.info(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">the&nbsp;new&nbsp;name&nbsp;is:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;name);&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />
}<br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setAge(String&nbsp;age)&nbsp;{&nbsp;logger.info(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">the&nbsp;new&nbsp;age&nbsp;value&nbsp;is:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;age);&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.age&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;age;<br />
}</span></div>
<br />
这个超级简单的一个 POJO,我们如何通过 Gemini 来创建他呢?我们通过 一个简单的配置文件。具体如下。<br />
Listing 2: pojoconfig.xml<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">blueprint&nbsp;</span><span style="color: #FF0000; ">xmlns</span><span style="color: #0000FF; ">="http://www.osgi.org/xmlns/blueprint/v1.0.0"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="myPOJO"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="org.gunn.gemini.demo.POJOWillInContainer"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="name"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="JetGeng"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="age"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="32"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">blueprint</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span></div>
<br />
用过 spring 的兄弟,第一眼就能看明白这个配置文件说的是什么。其实就 是创建了一个 bean。到这里,我们所需要做的工作其实就已经完成了。下 面就可以通过 Debug 来启动了。<br />
3.2&nbsp;&nbsp;&nbsp; 运行 Blueprint 容器 首先把 pojoconfig.xml 文件放到 project path/OSGi INF/blueprint 目录<br />
下。或者在 MANiFEST.MF 文件中通过如下语句进行指定。 Blueprint-Bundle: config/account-data-context.xml, config/osgi-*.xml<br />
更多内容参考http://www.eclipse.org/gemini/blueprint/documentation/ reference/1.0.0.RC1/html/app-deploy.html中的 8.2 Blueprint Manifest Configuration Comparison。好了,我们可以启动我们的应用程序了。为了 能够让 blueprint 顺利的跑起来,我们必须要把 blueprint 相关 bundle 以及 他所依赖的 bundle 都加入到运行时中。 按照上图配置后,点击运行。我们<br />
Figure 1: Debug 配置<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jetgeng/debug_config.png" /><br />
将在控制台得到如下内容。<br />
<br />
控制台中的黑色行显示我们的 POJO 已经被 BlueprintContainer 创建<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jetgeng/run_result.png" />
<br />
了,并且设定了相关属性。<br />
.<br />
这个部分的全部代码已经放到了 git://github.com/jetgeng/OSGi.git 中了。 感兴趣的筒子可以 down 下来玩玩。<img src ="http://www.blogjava.net/JetGeng/aggbug/354034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JetGeng/" target="_blank">Jet Geng</a> 2011-07-10 11:06 <a href="http://www.blogjava.net/JetGeng/archive/2011/07/10/354034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于《Developing Eclipse/OSGi Web Applications Part》一文中的例子</title><link>http://www.blogjava.net/JetGeng/archive/2008/03/15/186494.html</link><dc:creator>Jet Geng</dc:creator><author>Jet Geng</author><pubDate>Sat, 15 Mar 2008 07:33:00 GMT</pubDate><guid>http://www.blogjava.net/JetGeng/archive/2008/03/15/186494.html</guid><wfw:comment>http://www.blogjava.net/JetGeng/comments/186494.html</wfw:comment><comments>http://www.blogjava.net/JetGeng/archive/2008/03/15/186494.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/JetGeng/comments/commentRss/186494.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JetGeng/services/trackbacks/186494.html</trackback:ping><description><![CDATA[<span style="font-size: 11pt; font-family: 宋体;">关于《</span><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">Developing Eclipse/OSGi Web
Applications Part</span><span style="font-size: 11pt; font-family: 宋体;">》一文中的例子<br />
<br />
</span>
<p class="MsoNormal"><span style="font-family: 宋体;">近来看看点</span><span lang="EN-US">OSGI</span><span style="font-family: 宋体;">在</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">开发中的应用。看到这个方面的东西肯定会搜到</span><span lang="EN-US">EclipseZone</span><span style="font-family: 宋体;">上面的一篇文章，他叫《</span><span lang="EN-US">Developing Eclipse/OSGI Web Application</span><span style="font-family: 宋体;">》。说实话这个文章写的真的没说的，浅入浅出的同时还给你真正带来不少好东西。他的所有的内容是围绕着一个叫</span><span lang="EN-US">Rsp</span><span style="font-family: 宋体;">的例子进行的。这个例子在</span><span lang="EN-US"><a href="http://sourceforge.net/project/showfiles.php?group_id=122298">http://sourceforge.net/project/showfiles.php?group_id=122298</a>
</span><span style="font-family: 宋体;">处可以下载到。</span></p>
<span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:414.75pt;
height:68.25pt'>
<v:imagedata src="file:///C:/DOCUME~1/user/LOCALS~1/Temp/msoclip1/01/clip_image001.jpg" o:title="Wor243" />
</v:shape><![endif]--><!--[if !vml]--><img src="http://www.blogjava.net/images/blogjava_net/jetgeng/Eclipse/rsp_download.jpg" alt="" border="0" /><!--[endif]--></span><br />
<p class="MsoNormal"><span style="font-family: 宋体;">这里我下载了</span><span lang="EN-US">rspDemo-0.2.zip</span><span style="font-family: 宋体;">这个包。按照要求把包打开，并且运行。果然可以运行，并且能够得到文中所说的结果。</span></p>
<span style="font-size: 10.5pt; font-family: 宋体;">下面我们就来看看解压后的文件夹：<br />
<img src="http://www.blogjava.net/images/blogjava_net/jetgeng/Eclipse/rsp_folder.JPG" alt="" border="0" /><br />
</span><span style="font-size: 10.5pt; font-family: 宋体;">这个里面不光包括了示例代码还包含了一个</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">tomcat-5.5.15</span><span style="font-size: 10.5pt; font-family: 宋体;">生怕被人机器上没有装</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">tomcat</span><span style="font-size: 10.5pt; font-family: 宋体;">。好了，把我自己的</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">eclipse</span><span style="font-size: 10.5pt; font-family: 宋体;">的</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">workspace</span><span style="font-size: 10.5pt; font-family: 宋体;">设置成</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">c:\rsp\workspace</span><span style="font-size: 10.5pt; font-family: 宋体;">。这样我就得到了一个如下图的工作界面：<br />
<img src="http://www.blogjava.net/images/blogjava_net/jetgeng/Eclipse/rsp_workspace.jpg" alt="" border="0" /><br />
</span>
<p class="MsoNormal"><span style="font-family: 宋体;">这个时候我不想使用</span><span lang="EN-US">rsp</span><span style="font-family: 宋体;">中自己带的那个</span><span lang="EN-US">tomcat</span><span style="font-family: 宋体;">，我想自己已经有的</span><span lang="EN-US">tomcat</span><span style="font-family: 宋体;">。就在这个时候我遇到问题了。什么问题呢，我们来看看启动时的</span><span lang="EN-US">log</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: 宋体; color: black;">严重</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">: Servlet.service() for servlet jsp threw
exception</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><u><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: navy;" lang="EN-US">org.apache.jasper.JasperException</span></u><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">: 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</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 8pt; font-family: 宋体; color: black;">很明显是没有找到</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">uri</span><span style="font-size: 8pt; font-family: 宋体; color: black;">为</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><a href="http://java.sun.com/jsp/jstl/core">http://java.sun.com/jsp/jstl/core</a>
</span><span style="font-size: 8pt; font-family: 宋体; color: black;">的</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">tld</span><span style="font-size: 8pt; font-family: 宋体; color: black;">文件。不对啊，这个应该都是在</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">web</span><span style="font-size: 8pt; font-family: 宋体; color: black;">应用程序里面的啊。但是他自己带的</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">tomcat</span><span style="font-size: 8pt; font-family: 宋体; color: black;">就可以。肯定是他自己加了。我找了好大一会儿终于在</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">C:\rsp\apache-tomcat-5.5.15\common\lib</span><span style="font-size: 8pt; font-family: 宋体; color: black;">多出两个包他们分别是<span style="color: rgb(255, 40, 40);"><span style="color: rgb(255, 40, 40);"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><span style="color: rgb(255, 40, 40);"><span style="color: rgb(255, 40, 40);">jstl.jar</span></span></span></span></span></span><span style="font-size: 8pt; font-family: 宋体; color: black;">和</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">standard.jar</span><span style="font-size: 8pt; font-family: 宋体; color: black;">。查看了一下</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><span style="color: rgb(255, 40, 40);">standard.jar</span></span><span style="font-size: 8pt; font-family: 宋体; color: black;">所有真相大白。他包含了一个</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">c.tld</span><span style="font-size: 8pt; font-family: 宋体; color: black;">的文件。其中有这么一段</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US">&lt;description&gt;JSTL
1.1 core library&lt;/description&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US">&lt;display-name&gt;JSTL
core&lt;/display-name&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US">&lt;tlib-version&gt;1.1&lt;/tlib-version&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US">&lt;short-name&gt;c&lt;/short-name&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US">&lt;uri&gt;http://java.sun.com/jsp/jstl/core&lt;/uri&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 8pt; font-family: 宋体;">好了，把这两个包放入到我自己的</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US">tomcat</span><span style="font-size: 8pt; font-family: 宋体;">中，所有问题都解决了。终于顺畅的跑起来了。</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<br />
<img src ="http://www.blogjava.net/JetGeng/aggbug/186494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JetGeng/" target="_blank">Jet Geng</a> 2008-03-15 15:33 <a href="http://www.blogjava.net/JetGeng/archive/2008/03/15/186494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>