在IntelliJ中为Windows生成可执行文件

7
我曾经在一个IntelliJ项目上工作,该项目在我开始工作之前就已经启动了。这个项目有一个配置,可以让我生成一个EXE文件,很容易地发送给Windows用户。
它会生成一个巨大的EXE文件,捆绑了应用程序所需的所有JAR文件,并在第一次运行时静默地将自己“安装”到AppData文件夹中,就像是常规的Windows安装文件一样,即使用户甚至不会注意到它正在进行安装。
我试图在IntelliJ中配置一个项目来做完全相同的事情,但首先我无法通过选择“exe”作为Java FX本机包类型来输出exe文件。它只生成一个.jnlp和.jar文件。当我像stackoverflow上的其他帖子那样选择“全部”,它会生成一个exe文件,但只有几kb的大小,其中不包含任何应该包含的.jar文件。此外,当我尝试打开它时,它只是崩溃并说找不到主类。
我是否错过了一些构建项目的设置?我正在使用IntelliJ 2018.3.2
以下是一些截图:

enter image description here

enter image description here


我相信您没有将编译输出包含在模块中。您能否与我们分享“输出布局”选项卡屏幕以及“JavaFX”选项卡? 它们位于项目设置->构件-> 您的JavaFX构件中。 - Alex G.
@AlexG。已添加截图。 - Miguel Mesquita Alfaiate
也许将您的构件修改以包含JAR文件可以解决问题。您还可以尝试使用Maven。我使用一个Maven插件为Spring Boot创建可执行的fat JAR文件。 - duffymo
@duffymo "也许修改您的构件以包含JAR文件可以解决这个问题" -> 我已经将它们包含了,或者我漏掉了什么吗?那不是第一张截图吗? - Miguel Mesquita Alfaiate
显然不是这样的。JAR文件似乎没有出现在您的包中,或者它们没有列在清单中。您需要向清单添加CLASSPATH。我建议打开生成的构件并检查其内容。 - duffymo
3个回答

4

我通过调整编译的详细程度并查看日志,成功解决了这个错误。

其中有一条日志信息帮助我解决了问题:

进程报告缺少Inno Setup Compiler,这是正确的。让我想知道为什么IntelliJ会内置该功能,但却依赖外部工具而不清楚地通知用户。

Detected [iscc.exe] version 0.0 but version 5.0 is required.

访问Inno Setup网站后,下载并安装该工具后,我成功生成了可执行文件。

现在我遇到了另一个错误,即可执行文件抱怨Artifact中引用的主类未找到,但至少我已经解决了第一个问题!现在要解决这个问题...


0

这个问题的最佳解决方案是使用exe生成器软件。 有很多可用的exe生成器。

EXE4J 是最简单易用的工具。

在EXE4J中,
您可以上传您的主要jar文件并选择主类。

我认为这将解决您的问题。


3
我知道还有其他的解决方案,但我更倾向于继续使用IntelliJ,因为它迄今为止一直在工作。我要求解决IntelliJ的问题,而不是提供另一种替代方案。无论如何,感谢您的帮助。 - Miguel Mesquita Alfaiate

0

这可能是因为您将Jars提取到输出根目录,而您需要将其放置在另一个位置(您可以通过在“输出布局”屏幕中删除输出根目录中的所有内容,然后在右侧单击jar文件来检查差异,您将在此处看到两个选项,请尝试另一个选项)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接