【问题标题】:Create an executable jar for Swing app为 Swing 应用程序创建一个可执行的 jar
【发布时间】:2014-08-20 19:18:06
【问题描述】:

我创建了一个名为App.java 的Java 应用程序。它使用 GSON。因此,我创建了一个 jar gson.jar,然后创建了一个包含以下内容的清单文件 (manifest.mf)。

Manifest-Version: 1.0
Class-Path: test.jar gson.jar
Main-Class: App

然后我使用以下命令创建了 test.jar:

jar cfm test.jar manifest.mf *

编辑:jar cfm test.jar manifest.mf * 正在生成 jar,但在磁盘上无处可见。

并使用

运行它
java -jar test.jar

应用程序为ExitListener 抛出ClassNotFoundException。删除使用ExitListner 的代码后,它会像使用java App 运行一样正常运行。我错过了什么?

【问题讨论】:

  • ExitListener 类驻留在哪里?
  • jar -tvf test.jar 的输出(从内存中)是什么(另一个 Jar 也是如此)?
  • 我个人只会使用 Eclipse 并导出为可执行的 JAR,但我猜这并不聪明,因为您看不到细节。
  • @HovercraftFullOfEels:它是开发环境中的示例应用程序,因此我没有在 GSON 的包中添加任何东西(因为它来了)。
  • @Sanjeev : 它必须属于 swing 库。

标签: java swing jar classnotfoundexception executable-jar


【解决方案1】:

在你的类路径中添加包含ExitListener 类的jar

Class-Path: test.jar gson.jar <exitlistenerjar>

或编写您自己的ExitListener 并在您的应用程序中使用。

编辑

另一方面,您可以使用此代码并将其添加到您的应用程序中

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class ExitListener extends WindowAdapter {
    public void windowClosing(WindowEvent event) {
        System.exit(0);
    }
}

【讨论】:

  • 导入 java.awt.*;导入 javax.swing.*;导入 java.awt.event.*;是我的标题和 addWindowListener(new ExitListener());是代码。我假设 ExitListener 在默认包中。
  • ExitListener 不属于任何这些导入,因为 Java AWT/Swing 不提供 ExitListener 类
  • @user3388324 能否请您提供 ExitListener 的完全限定名称,即带有包结构
  • 可能来自 java.util.
  • Java 不提供任何 ExitListener。你需要下载这个类的jar。请在 Google 上搜索并将指定的 jar 添加到类路径中
猜你喜欢
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 2017-03-20
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
相关资源
最近更新 更多