【问题标题】:Linux but not windows? Java swingLinux而不是Windows? Java 摇摆
【发布时间】:2014-08-29 10:33:10
【问题描述】:

所以我在 Linux 中编写了这个程序,当我创建一个 jar 并运行它时它可以完美运行。

但由于某种原因,当我把这个罐子放在 windows 中时它没有。

其中一些有效,但是当我尝试执行一个简单的单击操作事件时,它会崩溃并告诉我

有一个

Exception in thread "AWT-EVentQueue-0" java.lang.NoClassDefFoundError: miginfocom/layout/cc

不管怎样,我去掉了它的某些组件,它可以工作,但对它们不起作用。

// MigLayout layout = new MigLayout("fillx");
            JPanel content = new JPanel(/*layout*/);

 /*CC componentConstraints = new CC();
            CC c = new CC();
            componentConstraints.alignX("center").spanX();
            c.alignX("center").span();
            c.alignY("bottom").span();*/

            content.add(label/*, componentConstraints*/);
            content.add(label1/*,c*/);

    //  after this I add it to a Jframe etc

注释掉的所有内容都是它无法在 Windows 上运行的原因。

但它会在 Linux 上,我不知道这是为什么......

谁能说出这是为什么或在哪里可以找到。将来会非常感激和有用:)

【问题讨论】:

  • 当您为项目计费时,您可能还有其他与之关联的库 jar,这些库 jar 需要包含在类路径中才能使应用程序正常工作。更多详情请关注Adding Classes to the JAR File's Classpath

标签: java linux windows swing noclassdeffounderror


【解决方案1】:

我认为您的类路径不正确。 所以找不到所需的库(例如 MigLayout)。 Windows 使用与 Linux 不同的路径分隔符(在类路径中)。

【讨论】:

  • 我该如何解决这个问题:)
  • 检查你的类路径。 Windows 使用 ; (分号)作为路径分隔符,linux 使用 :(冒号)。此外,检查罐子是否是有效的 Windows 路径。 (例如 /home/user/libs/MigLayout.jar)在 windows 环境中可能会出现问题
【解决方案2】:

如果您希望只分发一个 JAR 文件并且一切正常,则必须创建一个“uberjar”。在您的开发机器上,您可能可以访问您的 JAR 的依赖项,但当您仅将应用程序 JAR 复制到 Windows 时则不然。

【讨论】:

  • “你必须创建一个“uberjar””不,你不需要。如果 LAF 在应用程序的运行时类路径上,它将起作用。制作一个包罗万象的 Jar 只是实现这一目标的一种方式(并不是特别理想的方式)。
  • MigLayout 不是 LAF。
  • 我对 API 使用标识不好。但无论如何,它需要在类路径上。
  • 获取类路径中所有内容的最简单方法是使用 uberjar。
  • 如何从 "You would have to..""The最简单的方法是.." 进行编辑(以及稍后的相关调整在句子中)? 我可以同意。
猜你喜欢
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 2012-11-20
  • 2014-04-19
  • 1970-01-01
相关资源
最近更新 更多