问题描述
我正在清理并构建一个项目,该项目正在其“ dist”文件夹中创建其.jar文件。但是问题是,我无法运行它。我双击它,没有任何反应。
我已经在环境变量的“路径”选项中设置了JDK的“ bin”文件夹。
有什么我想念的吗?我不熟悉这一切,非常感谢您的帮助。
解决方法
建议 了解如何自己制作可执行文件,而不是依赖于自动生成的jar文件
Here是一个教程。
对于默认的jar文件, 您最有可能必须执行
java -jar MY_AWESOME_JAR_FILE_NAME.jar
,
有3个常见原因:
在Windows上,并使用sysin / sysout
Windows,因为显然微软没有能力修复古老的愚蠢行为,因此迫使应用程序具有终端,在这种情况下,总是弹出一个丑陋的黑匣子,否则,它们将不再出现。这意味着仅在Windows上,有2个Java可执行文件:java.exe
和javaw.exe
,唯一的区别是javaw没有框。但是,它没有盒子-sysin和sysout几乎完全不起作用。
默认情况下,双击一个jar会以javaw启动它,这意味着如果您的应用唯一的交互是从System.in
读取并写入System.out
或System.err
,您将不会看到任何东西。
没有解决办法,只能制作一个GUI应用程序或制作一个明确运行java.exe
的批处理文件(仅Windows概念)。
这不适用于linux或macs。
jar文件损坏
可运行的jar文件是具有三个属性的文件:
- 罐子里有一个类,里面有一个
public static void main(String[] args)
方法。 - 该类在jar清单中的键
Main-Class
下命名(完全限定) - 所需的任何部门都可以放入罐子中或其他罐子中,而其他罐子则以空格分隔并相对于您双击的罐子所在清单的目录命名(在清单中)
Class-Path
。请注意,双击jar时,全局环境变量CLASSPATH
无效。
您可以检查所有这一切;罐子只是zip文件。另外,您的JDK中的jar
工具可以将它们解压缩,清单只是其中的一个名为META-INF/MANIFEST.MF
的文件。您可以打开它,看看它是否配置正确。
java安装失败
首先检查任何随机可运行的jar。也许您安装了无头Java。请注意,最近几天(自JDK9起),“最终用户”甚至都不会安装Java,而双击jar来运行它的想法基本上已经过时了。要制作“桌面” Java应用程序,您需要交付整个JRE(如果需要,可以摇摇树),并负责安装程序。 JDK(自9开始)中有一些有限的工具可以帮助您(例如jlink
)。
- 使用CLI查看您的Java是否正确设置,jar是否损坏或jar与已安装的Java版本不兼容。
- 确保jar文件与Java二进制文件正确关联。可以在here 中找到该说明
只需编辑清单文件,在其中添加主要方法即可。如果您还有其他参考库,只需将它们放在那里的类路径中。 清单明细位于: https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html