<?xml version="1.0" encoding="gb2312"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title>海波无痕</title>
        <description>海波无痕</description>
        <link></link>
        <lastBuildDate>Thu, 11 Mar 2010 15:14:11 +0800</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <copyright>海波无痕</copyright>
        <item>
            <title>修改Tapestry3在{yourServlet}.application配置加载存在于classpath中的组件规范</title>
            <link>http://ziki.cn/q/index.php/q-b_uuid-18.html</link>
            <description>&lt;p&gt;修改Tapestry3在{yourServlet}.application配置加载存在于classpath中的组件规范&lt;br /&gt;在Tapestry3中的{yourServlet}.application文件中不能加载配置在classpath中的jwc组件规范&lt;br /&gt;如&lt;br /&gt;&amp;lt;application name=&amp;quot;yourApp&amp;quot; engine-class=&amp;quot;org.apache.tapestry.engine.BaseEngine&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;component-type type=&amp;quot;MyComponent&amp;quot; specification-path=&amp;quot;/com/yourApp/components/MyComponent.jwc&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/application&amp;gt;&lt;/p&gt;&lt;p&gt;这种写法按照常规的应该从classpath拿到组件的规范文件,但Tapestry3中出错拿不到规范文件&lt;br /&gt;tapestry3分别有两个 org.apache.tapestry.IResourceLocation 的实现&lt;br /&gt;org.apache.tapestry.resource.ClasspathResourceLocation&lt;br /&gt;org.apache.tapestry.resource.ContextResourceLocation&lt;br /&gt;分别加载classpath下的资源和webContext下的资源&lt;/p&gt;&lt;p&gt;解决办法&lt;br /&gt;修改org.apache.tapestry.engine.Namespace类&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private IComponentSpecification locateComponentSpecification(String type)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String path = _specification.getComponentSpecificationPath(type);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (path == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ApplicationRuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tapestry.format(&amp;quot;Namespace.no-such-alias&amp;quot;, type, getNamespaceId()));&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IResourceLocation location = getSpecificationLocation().getRelativeLocation(path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //hack&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (location.getResourceURL() == null &amp;amp;&amp;amp; path.startsWith(&amp;quot;/&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location = new ClasspathResourceLocation(_specification.getResourceResolver(), path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //hack&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _specificationSource.getComponentSpecification(location);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;增加该方法的hack的地方强制从classpath中查找资源&lt;/p&gt;</description>
            <author>海波无痕</author>
            <pubDate>Fri, 18 Jan 2008 03:33:19 +0800</pubDate>
        </item>
        <item>
            <title>Caused by: java.lang.ClassNotFoundException: Class bytes found but defineClass()failed for:</title>
            <link>http://ziki.cn/q/index.php/q-b_uuid-17.html</link>
            <description>&lt;p&gt;Caused by: java.lang.ClassNotFoundException: Class bytes found but defineClass()failed for:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;宋体&quot; size=&quot;3&quot;&gt;高版本JDK编译的class在低版本JDK下无法运行&lt;/font&gt;&lt;/p&gt;</description>
            <author>海波无痕</author>
            <pubDate>Thu, 17 Jan 2008 08:29:51 +0800</pubDate>
        </item>
    </channel>
</rss>
