java - 无法在 Eclipse 中使用 MigLayout,但可以在 Groovy Console 中使用

标签 java eclipse groovy miglayout

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

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

非常感谢所有帮助。

最佳答案

看起来像这样line是罪魁祸首。

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

最新的 jar 是 4.2,这个问题似乎已通过 try-catch block 修复。
尝试使用这些 jar 。它们可以从 Maven 存储库中获得。 http://mvnrepository.com/artifact/com.miglayout/miglayout-swing/4.2
http://mvnrepository.com/artifact/com.miglayout/miglayout-core/4.2

关于java - 无法在 Eclipse 中使用 MigLayout,但可以在 Groovy Console 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13679194/

相关文章:

unit-testing - 在 : block in Spock test 中传递一个值

Java - 下采样wav音频文件

java - Java 8 的 Oracle JVM 中物理存储的 'tz' 时区数据库在哪里?

eclipse - 我在 Eclipse 中看不到 Aptana 透视图

android - 无法在 android.gradle 中正确设置文件路径

jenkinsfile 使用特征和其他常规语法

mac 上大文件的 java.io.RandomAccessFile 无效参数

java - hibernate.hbm2ddl.import_files : Path to the files

android - 尝试将字符串从 Android 模拟器发送到网络服务

eclipse - 为什么在eclipse中安装SVN这么难?