我对java很新。我正在开发一种工具来检查您的PC是否符合一些规范。这包括编写和执行单独的批处理文件,并包括CPU模型的API(SIGAR)。
我的问题是,当我尝试将其导出到eclipse中的Runnable JAR时,我从命令行运行生成的JAR,它给了我很多'未包含在构建路径中的DLL'异常。在构建路径中包含包含API DLL的文件夹后,我得到了类似的例外。解决它的问题是在高级系统设置中将包含DLL的文件夹添加到环境变量(PATH)。
问题:
JAR现在可以在我的计算机上正常运行,但是下载JAR的用户呢?他们是否还需要将DLL添加到环境变量中?如果是这样,JAR可以为他们做到这一点吗?
我的JAR不会通过双击运行,而是从命令行运行。有没有什么方法可以延续下载JAR的用户?
如果用户下载该工具但由于他们没有正确版本的JRE而无法运行该工具,该工具会通知他们吗?如果没有,是否有办法让用户不得不更新JRE或将包装为EXE就足够了?
提前致谢,非常感谢。很多问题。
答案 0 :(得分:0)
Q1:JAR现在可以在我的电脑上运行正常,但用户呢 谁下载JAR?他们是否还需要添加DLL 环境变量?如果是这样,JAR可以做到这一点 它们?
您可以将DLL 放在 JAR文件中:
但是,当您分发包含DLL的JAR时,您会遇到不同平台需要不同DLL(或其他)的问题。即使使用Windows,也存在32位与64位DLL的问题。
Q2:我的JAR不会双击,但会从命令运行 线。有没有办法解决这个问题,这会影响到那些用户 也下载JAR?
您无法在JAR文件中解决该问题。 "双击运行"功能由OS实现。提供此类功能的最佳方法是使用可双击的(特定于平台的)包装脚本。
问题3:如果用户下载该工具但无法运行该工具,因为他们不会 拥有正确版本的JRE,工具会通知他们吗?如果不, 有没有办法围绕用户不得不更新JRE或将包装 作为EXE足够吗?
除非您安装了JRE,否则JAR文件只是一个被动的数据块。 (实际上是一个ZIP文件)。
如果用户的JRE太旧,那么JRE将无法加载JAR中的任何类(因为类文件版本号错误),或者由于缺少(系统)类而导致错误
唯一的希望就是提供一个包装器脚本来启动你的应用程序,在尝试启动JAR之前检查JRE版本。
作为一般规则,如果你想做这样的花哨的东西,你需要在安装程序中分发程序,而不是作为一个裸JAR文件。