emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評(píng)論 :: 2 Trackbacks
          <2005年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          公告

          常用鏈接

          留言簿(92)

          隨筆分類(20)

          隨筆檔案(171)

          文章分類(89)

          文章檔案(103)

          相冊(cè)

          收藏夾(46)

          友情連接

          收藏

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          一個(gè)面向?qū)ο蟮恼Z言往往都是通過package把對(duì)象組織起來的,但是很奇怪居然沒有找到groovy的package方面的資料,難道groovy不支持?那么我們?cè)趺从胓roovy來設(shè)計(jì)負(fù)責(zé)一點(diǎn)的程序呢?還是做試驗(yàn)試試吧:

          Dog.groovy:

           1package com
           2class Dog {
           3    public def name;
           4    def bark ()  {
           5        println("barking")
           6    }

           7    def say ()  {
           8        println("My name is "+name);
           9    }

          10}

          11


          嗯,一只會(huì)說一句話的狗,還回吠哦。

          編譯一下看看有沒有錯(cuò): groovyc Dog.groovy
          嗯,沒有錯(cuò),而且在當(dāng)前目錄下生成了一個(gè)com目錄,其中有Dog.class文件

          再建一個(gè)類來引用這個(gè)類  trainDog.groovy:
          1dog = new com.Dog(name:"Doggie");
          2dog.bark();
          3dog.say();
          4



          運(yùn)行……失敗了:

          Caught: General error during class generation: No such class: com.Dog in constructor call for class: trainDog. At [1:7] D:\groovy\mygroovy\com\trainDog.groovy

          一番努力之后,始終無法讓 trainDog.groovy運(yùn)行起來,但是反編譯這兩個(gè)groovy生成的class文件看起來又很正確。算了,用java來運(yùn)行它吧(還好一開始就配置了editplus下面的調(diào)試環(huán)境,下面的命令由editplus自動(dòng)生成,不用自己敲了)

          D:\jdk1.5.0\bin\java.exe -classpath .;d:\groovy\groovy-1.0-jsr-01.jar;d:\groovy\lib\asm-1.5.2.jar trainDog

          果然不錯(cuò):

          ---------- java ----------
          barking
          My name is Doggie
          Normal Termination
          輸出完成(耗時(shí) 0 秒)。


          看來groovy雖然可以直接運(yùn)行,卻不能直接相互引用。進(jìn)行復(fù)雜應(yīng)用的時(shí)候還是要先編譯好以便他們可以相互引用類文件。此外groovy編譯器會(huì)自動(dòng)為包創(chuàng)建對(duì)應(yīng)的目錄,所以所有的groovy不管分散到多少包里面都要在同一個(gè)目錄(所有包的上一層)下面編譯。

          posted on 2005-05-19 18:37 emu 閱讀(2049) 評(píng)論(3)  編輯  收藏 所屬分類: Groovy 學(xué)習(xí)筆記

          評(píng)論

          # re: Groovy 學(xué)習(xí)筆記4 package 2005-10-03 16:56 順路走過
          這個(gè)好像不是groovy的問題。
          類似的東西,偶屢試不爽。而且,前面那個(gè)Dog.groovy并不需要編譯  回復(fù)  更多評(píng)論
            

          # re: Groovy 學(xué)習(xí)筆記4 package 2005-10-04 15:03 emu
          >>這個(gè)好像不是groovy的問題
          呵呵就象朋友經(jīng)常批評(píng)的,這是人品問題。我覺得這個(gè)問題上groovy沒有提供一個(gè)簡(jiǎn)單的解決方案。

          >>類似的東西,偶屢試不爽
          是指的什么?import嗎?怎么做呢?

          >>前面那個(gè)Dog.groovy并不需要編譯
          是指的運(yùn)行不需要編譯還是被其他groovy腳本import之前不需要編譯呢?  回復(fù)  更多評(píng)論
            

          # re: Groovy 學(xué)習(xí)筆記4 package 2006-04-30 16:18 theone
          這個(gè)問題我也碰到了,不完美的地方  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 昌邑市| 辰溪县| 青田县| 拉萨市| 江城| 钟山县| 东海县| 尼木县| 陈巴尔虎旗| 酉阳| 阳新县| 德阳市| 河西区| 太白县| 溧水县| 西华县| 汝城县| 绥阳县| 合山市| 江门市| 宿迁市| 乐陵市| 安仁县| 绩溪县| 常宁市| 磐石市| 榆林市| 梁山县| 双城市| 聂拉木县| 海南省| 乳源| 巴东县| 阜新市| 封丘县| 彝良县| 朔州市| 会东县| 丹东市| 龙南县| 井研县|