0

最近Googleで検索したところ、以下のコードを試してGriffon 1.2.0で動作させたいのですが、実行すると次のようなエラーが表示されます:

2013-03-23 12:13:01,877 [main] DEBUG griffon.plugins.i18n.I18nEnhancer - Enhancing org.codehaus.groovy.runtime.HandleMetaClass@b7ea5c[groovy.lang.ExpandoMetaClass@b7ea5c[class griffon.swing.SwingApplication]] with griffon.plugins.i18n.MessageSourceHolder@7b7bee
2013-03-23 12:13:01,909 [main] ERROR griffon.util.GriffonExceptionHandler - Uncaught Exception
groovy.lang.GroovyRuntimeException: Cannot add new method [getMessage] for arguments [[class java.lang.String, class java.util.Locale]]. It already exists!
    at griffon.plugins.i18n.I18nEnhancer.enhance(I18nEnhancer.groovy:34)
    at griffon.plugins.i18n.I18nEnhancer.enhance(I18nEnhancer.groovy)
    at griffon.plugins.i18n.I18nEnhancer$enhance.call(Unknown Source)
    at I18nSupportGriffonAddon.addonPostInit(I18nSupportGriffonAddon.groovy:40)
    at griffon.core.GriffonAddon$addonPostInit.call(Unknown Source)
    at griffon.core.GriffonAddon$addonPostInit.call(Unknown Source)
    at org.codehaus.griffon.runtime.util.AddonHelper$_handleAddonsAtStartup_closure3.doCall(AddonHelper.groovy:110)
    at org.codehaus.griffon.runtime.util.AddonHelper.handleAddonsAtStartup(AddonHelper.groovy:108)
    at org.codehaus.griffon.runtime.core.DefaultAddonManager.doInitialize(DefaultAddonManager.java:33)
    at org.codehaus.griffon.runtime.core.AbstractAddonManager.initialize(AbstractAddonManager.java:101)
    at org.codehaus.griffon.runtime.util.GriffonApplicationHelper.initializeAddonManager(GriffonApplicationHelper.java:394)
    at org.codehaus.griffon.runtime.util.GriffonApplicationHelper.prepare(GriffonApplicationHelper.java:149)
    at org.codehaus.griffon.runtime.core.AbstractGriffonApplication.initialize(AbstractGriffonApplication.java:231)
    at griffon.swing.AbstractSwingGriffonApplication.bootstrap(AbstractSwingGriffonApplication.java:75)
    at griffon.swing.AbstractSwingGriffonApplication.run(AbstractSwingGriffonApplication.java:132)
    at griffon.swing.SwingApplication.run(SwingApplication.java:45)
    at griffon.swing.SwingApplication.main(SwingApplication.java:37)
   [delete] Deleting directory G:\latihan\outer\staging\windows

これがコードです。これはもともとaalmirayによって作成されました

--- OuterController ---
package outer

class OuterController {
    def model
    def view
    def builder

    def newFrame = {
        String id = 'inner-' + System.currentTimeMillis()
        def (m, v, c) = createMVCGroup('inner', id, title: "Frame ${model.count++}")
        builder.desktopPane(view.desktop) {
            widget(v.innerFrame)
        }
    }
}

--- OuterModel ---
package outer

class OuterModel {
    int count = 1
}

--- OuterView ---
package outer

application(title: 'outer',
  preferredSize: [320, 240],
  pack: true,
  locationByPlatform:true,
  iconImage: imageIcon('/griffon-icon-48x48.png').image,
  iconImages: [imageIcon('/griffon-icon-48x48.png').image,
               imageIcon('/griffon-icon-32x32.png').image,
               imageIcon('/griffon-icon-16x16.png').image]) {
    borderLayout()
    button(newFrameAction, constraints: NORTH)
    desktopPane(id: 'desktop', constraints: CENTER)
}

--- InnerController ---
package outer

class InnerController {
    private String id
    def view

    void mvcGroupInit(Map args) {
        id = args.mvcName
    }

    void mvcGroupDestroy() {      
        execAsync {
            def desktop = view.innerFrame.parent
            desktop.remove view.innerFrame
            desktop.invalidate()
            desktop.repaint()
        }
    }

    def close = {
        destroyMVCGroup id
    }
}

--- InnerView ---
package outer

internalFrame(title: title, size: [200, 200], id: 'innerFrame',
    visible: true, iconifiable: true, maximizable: true,
    resizable: true, closable: true) {
    gridLayout(cols: 1, rows: 2)
    label 'Content goes here'
    button closeAction    
}

あなたの助けが必要です。

よろしく、ヘンドラ

4

1 に答える 1

1

i18n および i18n-support プラグインがインストールされているというエラー メッセージが表示されます。Griffon 1.1.0 以降、これらのプラグインは不要になりました。プラグインをアンインストールすると、問題が解決します。

その理由は、これらのプラグインによって提供される機能が 1.1.0 以降の Griffon コアで利用できるようになったため、それらのプラグインが競合を引き起こすためです。

于 2013-03-23T08:45:16.490 に答える