<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2006年12月28日

    grails 有一個 wicket 的插件:

    http://graemerocher.blogspot.com/2007/05/grails-wicket-wonders-of-grails-plug-in.html

    我試了一下,發(fā)現(xiàn)最新版本(0.3)的wicket插件,運行helloworld都有問題,錯誤是:

    wicket.markup.MarkupNotFoundException: Markup not found.

    查看了一下原因,按照文檔, HelloWorld.html 是放在 grails-app/views 目錄下的,但是 wicket 插件 沒有修改classpath 和 resource 裝載的路徑,也就是說,實際上這個 HelloWorld.html 對于 wicket 來說 是不可見的。但是如果把這個 HelloWorld.html 放在 src/java 目錄下,則可以正常運行。
    想到了一個簡單的解決方案,修改 $GRAILS_HOME/scripts/Package.groovy,在 146 行增加:
    fileset(dir:"${basedir}/grails-app/views") {
    include(name:
    "**/**")
    exclude(name:
    "**/*.groovy")
    }

    就像 src/java 當中的資源一樣,全部拷貝到目標目錄下,這樣的效果就和放在 src/java 目錄下一樣了。

    主站: http://blogsite.3322.org/

    posted @ 2008-01-15 10:38 SimonLei 閱讀(1103) | 評論 (1)編輯 收藏

    首先看看我前幾天的一篇blog

    spring 與 osgi的第一個障礙

    eclipse3.1, spring2.0.1,將spring.jar放到一個插件中,在另一個插件中去使用。 最簡單的例子,在context.getBean的時候就報了一個異常:

    Caused?by:?org.xml.sax.SAXParseException:?cvc - elt. 1 :?Cannot?find?the?declaration?of?element? ' beans ' .

    先是搜了一遍,沒有發(fā)現(xiàn)很有幫助的內容。然后跟了一下,發(fā)現(xiàn)還是因為xsd的映射找不到。而造成這個問題的原因, 是在 spring.jar當中的META-INF/spring.schemas 這個找不到。

    而這個找不到的最根本原因,是因為在eclipse當中,META-INF目錄是不能夠被其他插件找到的。也就是說,META-INF 目錄是擁有spring.jar的那個插件所獨占的,而其他插件就算依賴于這個插件,也是無法找到META-INF目錄下的文件, 從而拋出這個異常。

    解決問題的辦法有幾個,最簡單的莫過于拷貝spring.schemas文件到需要的插件中,另一個辦法是把spring的context 裝載就放在spring.jar所在的插件中,或者改eclipse的代碼。 :(

    這個問題解決之后,緊接著第二個問題就是

    Unable?to?locate?NamespaceHandler? for ?namespace?http: // www.springframework.org/schema/aop

    造成這個的原因和第一個類似,將spring.handlers拷貝到META-INF目錄下就ok了。

    上面是我以前的一個經驗,今天仔細研究了一下,發(fā)現(xiàn)自己掉進了 經驗主義的圈套。

    這個經驗是這樣積累起來的:在剛開始嘗試使用eclipse的時候,用的是3.0和3.1Mx系列,當時 不知道osgi是個什么東西 :$ 創(chuàng)建的幾個插件,都沒有創(chuàng)建osgi bundle manifest。也就是說, 只有plugin.xml,而沒有META-INF/MANIFEST.MF文件的。但是在運行期,eclipse會自動的 從plugin.xml當中讀取信息,生成臨時的MANIFEST.MF文件,放在 runtime的 configuration/org.eclipse.osgi/manifests 目錄下。而生成這個MANIFEST.MF文件,是 通過 PluginConverterImpl 這個類來實現(xiàn)的,在它的 isValidPackageName 方法中,所有的 META-INF或者以META-INF開頭的目錄,都不會被自動的export出去,從而在臨時生成的MANIFEST.MF 文件中,永遠不會有META-INF目錄的export。

    當時剛開始接觸eclipse和osgi,根本不知道自己當時最佳的解決方案就是創(chuàng)建一個 bundle manifest, 然后在其中將META-INF目錄export出來。而是通過盲目的修改代碼來繞過這個彎。后來這個彎繞過去了, 留給我的經驗就是:META-INF這個目錄,是插件獨享的,別的插件不允許訪問的。

    于是,在前幾天,當spring.jar當中的幾個META-INF目錄下的文件訪問不了時,我也認為這個經驗有用, 差點就去改eclipse的代碼了。幸好嘗試了一下,把spring.jar所在的插件中,將META-INF目錄共享出來, 居然就好了。仔細查了一下,發(fā)現(xiàn)屏蔽META-INF的代碼只出現(xiàn)在PluginConverterImpl這個類當中。 回頭想了想,終于明白自己這次是掉在經驗主義的坑里面了。

    經驗主義害死人啊。唉。

    主站: http://blogsite.3322.org/

    posted @ 2006-12-28 10:37 SimonLei 閱讀(3354) | 評論 (2)編輯 收藏

    統(tǒng)計

    主站蜘蛛池模板: 狠狠亚洲婷婷综合色香五月排名 | 亚洲福利一区二区精品秒拍| 亚洲精品成人网站在线观看| 亚洲女女女同性video| 三年片在线观看免费大全| 亚洲综合最新无码专区| 美女被免费视频网站a| 免费一级特黄特色大片在线观看 | 久久久久国产成人精品亚洲午夜 | 国产精品亚洲精品日韩电影| 性做久久久久久久免费看| 亚洲国产成人久久三区| 中文字幕a∨在线乱码免费看| 国产一卡2卡3卡4卡2021免费观看| 亚洲视频在线观看网址| 大妹子影视剧在线观看全集免费| 亚洲日韩中文在线精品第一| 国产乱妇高清无乱码免费| 久久精品国产亚洲AV果冻传媒| 久久青草国产免费观看| 亚洲另类视频在线观看| 啦啦啦中文在线观看电视剧免费版| 亚洲老妈激情一区二区三区| 污视频在线观看免费| 亚洲色婷婷一区二区三区| 久久久免费精品re6| 亚洲一区无码中文字幕| 日本亚洲欧洲免费天堂午夜看片女人员| 亚洲人成亚洲精品| 999国内精品永久免费视频| 亚洲av永久无码精品网址| 亚洲综合色视频在线观看| 久久国产乱子伦免费精品| 亚洲精品亚洲人成在线播放| 99爱在线精品视频免费观看9 | 亚洲一区二区三区四区在线观看| 精品久久久久成人码免费动漫| 久久久久亚洲国产AV麻豆| 亚洲va久久久噜噜噜久久天堂| 国产99视频精品免费观看7| 无遮挡呻吟娇喘视频免费播放|