1

Windows 7、Eclipse 4.2.1、および (使用しようとしている) MigLayout 4.0 を使用しています。

miglayout-4.0-swing.jar をダウンロードしてクラスパスに追加し、Groovy コンソールで次のスクリプトを正常に実行しました。

import groovy.swing.SwingBuilder
import groovy.swing.factory.LayoutFactory
import javax.swing.WindowConstants as WC
import net.miginfocom.swing.MigLayout

def swing = new SwingBuilder()
swing.registerBeanFactory('migLayout', MigLayout)

swing.build {
    frame(id: 'eventScrollPanel', pack: true, show: true,
      defaultCloseOperation: WC.EXIT_ON_CLOSE) {
        migLayout(layoutConstraints: "fill, debug", columnConstraints: "",
        rowConstraints: "")
        panel() {
            label(text: "test")
        }
    }
}

Eclipse で、外部 jar ファイルを JDK に追加し、プロジェクト => プロパティ => Java ビルド パス => ライブラリ タブ => JRE システム ライブラリ [jdk1.7.0_09] に表示されることを確認しました。ただし、スクリプトは次のエラーで失敗します。

Caught: java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
    at net.miginfocom.layout.UnitValue.<init>(Unknown Source)
    at net.miginfocom.layout.UnitValue.<clinit>(Unknown Source)
    at net.miginfocom.layout.PlatformDefaults.<clinit>(Unknown Source)
    at net.miginfocom.swing.MigLayout.<init>(Unknown Source)
    at net.miginfocom.swing.MigLayout.<init>(Unknown Source)
    at MigLayoutExamples$_run_closure1_closure2.doCall(MigLayoutExamples.groovy:12)
    at MigLayoutExamples$_run_closure1_closure2.doCall(MigLayoutExamples.groovy)
    at MigLayoutExamples$_run_closure1.doCall(MigLayoutExamples.groovy:10)
    at MigLayoutExamples$_run_closure1.doCall(MigLayoutExamples.groovy)
    at MigLayoutExamples.run(MigLayoutExamples.groovy:9)
Caused by: java.lang.NullPointerException
    at net.miginfocom.layout.LayoutUtil.hasBeans(Unknown Source)
    at net.miginfocom.layout.LayoutUtil.<clinit>(Unknown Source)
    ... 10 more

また、スクリプトの 12 行目の先頭にある migLayout 参照は、Eclipse によって下線が引かれています。つまり、Eclipse は参照を解決できません。

すべての助けに感謝します。

4

1 に答える 1

2

このが犯人のようです。

LayoutUtil.class.getClassLoader().loadClass("java.beans.Beans");

最新の jar は 4.2 で、この問題はtry-catchブロックで修正されているようです。
これらの瓶で試してみてください。これらは Maven リポジトリから入手できます。http://mvnrepository.com/artifact/com.miglayout/miglayout-swing/4.2
http://mvnrepository.com/artifact/com.miglayout/miglayout-core/4.2

于 2012-12-03T08:24:40.987 に答える