【问题标题】:Cannot use MigLayout in Eclipse, but it works in Groovy Console不能在 Eclipse 中使用 MigLayout,但它可以在 Groovy 控制台中使用
【发布时间】:2012-11-20 16:18:17
【问题描述】:

我正在使用 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 tab => 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

此外,脚本第 12 行开头的 migLayout 引用带有 Eclipse 下划线,即 Eclipse 无法解析该引用。

感谢所有帮助。

【问题讨论】:

    标签: java eclipse groovy miglayout


    【解决方案1】:

    看起来line 是罪魁祸首。

    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

    【讨论】:

    • 非常感谢您近乎即时的回复。我已更改为 V4.2,脚本现在可以完美运行。请注意,需要从 Maven 存储库下载两个 jar 文件:miglayout-core-4.2.jar 和 miglayout-swing-4.2.jar。这与 MigLayout 网站上的 V4.0 不同,后者是单个 jar 文件。
    • 太棒了!!继续接受答案,以便其他人知道这是正确的答案。如果你能给我确切的两个罐子,我可以更新我的答案。
    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多