Невозможно использовать MigLayout в Eclipse, но он работает в консоли Groovy

Я использую 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 и убедился, что он отображается в Project => Properties => Java Build Path => вкладка Libraries => JRE System Library [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

Кроме того, ссылка на migLayout в начале строки 12 сценария подчеркнута Eclipse, т.е. Eclipse не может разрешить ссылку.

Всем помощь с благодарностью.


person Jeremy Bartle    schedule 03.12.2012    source источник


Ответы (1)


Похоже на это строка является виновником.

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

Последняя версия jar-файла - 4.2, где эта проблема, похоже, была исправлена ​​с помощью блока try-catch.
Попробуйте использовать эти jar-файлы. Они доступны из репозитория Maven. http://mvnrepository.com/artifact/com.miglayout/miglayout-swing/4.2
http://mvnrepository.com/artifact/com.miglayout/miglayout-core/4.2

person Ajay George    schedule 03.12.2012
comment
Большое спасибо за ваш почти мгновенный ответ. Я перешел на V4.2, и теперь скрипт работает отлично. Обратите внимание, что необходимо загрузить два файла jar из репозитория Maven: miglayout-core-4.2.jar и miglayout-swing-4.2.jar. Это отличается от версии V4.0 на веб-сайте MigLayout, которая представляет собой один файл jar. - person Jeremy Bartle; 03.12.2012
comment
отличный.!! Примите ответ, чтобы другие знали, что это правильный ответ. Я могу обновить свой ответ, если вы дадите мне две точные банки. - person Ajay George; 03.12.2012