【问题标题】:Converting a JApplet to .exe将 JApplet 转换为 .exe
【发布时间】:2012-12-28 10:37:02
【问题描述】:

我有一个小(摆动)japplet,在日食中完美地运行:它包含一个标签,两个按钮和一个菜单,具有最小用户交互(选择菜单项时,容器的颜色更改)。 我将其转换为 .jar:

  • 我右键单击类名(Sw3.java)
  • 选择“导出”,然后选择“Java”,然后选择“JAR 文件”
  • 接下来,我选择当前项目名称作为要导出的资源,双击它下面的“默认包”,从右侧的类列表中选择所需的类名(Sw3.java)
  • 接下来,我勾选“导出生成的类文件和资源”,选择导出目标为“JAR 文件”,并将其放在“文档”中,名称为“Sw3.jar”。我还选择了“压缩 JAR 文件的内容”。
  • 在下一个屏幕中,我检查了“导出带有编译错误的类文件”和“导出带有编译警告的类文件”

我听说获取exe文件的正确方法是将.jar转换为.exe,所以我将“Launch4j”应用程序与之前获得的.jar一起使用:

  • 在“基本”面板中:指定输出文件:C:\Users\jerry\Documents\Sw3.exe 和 JAR 文件:C:\Users\jerry\Documents\Sw3.jar。
  • 进程优先级正常
  • 标题类型:GUI
  • 最小 JRE 版本:1.0.0
  • 我按下“滚轮”并选择 Project.xml 并收到一条成功的确认消息。

我已经安装了 JRE,所以 .exe 应该可以工作,但它不能工作。我做错什么了?我将首先调查 .JAR 是否正确获得,这是一个好方法吗?我将如何检查?谢谢!

PS:在被建议使用 JFrame 而不是 JApplet 时,我这样做了,但当我双击 .exe 以打开它时仍然没有任何反应。这让我怀疑我描述的步骤有问题。

【问题讨论】:

  • 为什么你制作了一个 JApplet 而不是一个简单的 JFrame?小程序是特殊的野兽,虽然它们在某些情况下可以在桌面上运行,但它们更适合放在网页上(显然它已经过时了)。
  • 谢谢 PhiLho,我使用 JApplet 是因为我是新手,正在练习 Swing,而且对它比 JFrame 更舒服。但是,我按照下面的 martijno 和您自己的建议添加了一个 JFrame,但我仍然遇到同样的问题。
  • 我在考虑使用纯 JFrame。我只是不知道 Launch4j 是否可以处理 JApplet(Google 搜索返回零出现,这很少见!)。您可以尝试使用--l4j-debug 选项从命令行启动exe,也许您会收到一些相关的错误消息。
  • 谢谢 PhiLo,我听从了这个建议,从这个链接中选择了第二个示例,并添加了一些额外的行和组件(例如标签)jsong.ba.ttu.edu/ISQS2341/Fall05/Lecture08_Example.pdf。这不起作用,所以我再次尝试使用更复杂的 JFrame 示例,即来自同一链接的 MyFrame 示例。当我从 Eclipse 运行它们时,它们都可以正常工作,所以我在上面的原始问题中提出的步骤一定有问题?

标签: java eclipse


【解决方案1】:

向您的小程序添加一个 main 方法,将其放在 JFrame 中:

public static void main(String[] arg) {
  JFrame frame = new JFrame();
  JApplet applet = new Sw3();
  frame.getContentPane().add(applet);
  frame.pack();
  frame.setVisible(true);
  applet.init();
  applet.start();
}

在 Eclipse JAR 导出对话框中,在“JAR Packaging Options”屏幕(上面提到的带有“Export class files with error and/or warnings”的屏幕)之后,单击下一步(然后没有完成)。选择“生成清单文件”并输入您的主类的完全限定(即包括包)类名:

【讨论】:

  • 谢谢 Martijno,我确实用 JApplet applet = new Sw3(); 添加了 main 方法以适应我的情况并再次完成我最初问题中提出的所有步骤;但是我仍然没有看到任何变化,unf。如果我双击 .exe 将其打开,则没有任何反应。
  • 您是否在某处的 jar 清单中指定包含 main 方法(可能是您的 applet 类)的类?
  • 我想我是在第三步做的,但我不确定这是否是你所指的:[我选择当前项目名称作为要导出的资源,双击它下面的“默认包” ,从右侧的类列表中选择所需的 类名(JFrame 类)。] 在 JAR 导出的最后一步中,我还看到默认选择“指定清单”并将其保留为这样的。 “使用工作区中的现有清单”是那里的第二个选项。可能 JAR 没有正确生成。
  • 正在编辑我的答案...等等。
  • 哦,天哪,成功了,从现在开始我必须记住这一步并将其添加到程序中,非常感谢,我现在真的很开心!你太棒了!
猜你喜欢
  • 2012-04-21
  • 1970-01-01
  • 2020-09-22
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
相关资源
最近更新 更多