使用 SUGAR 时出现“no sugar-winnt.dll in java.library.path”错误
“no sigar-winnt.dll in java.library.path” error when using SIGAR
我对 java 很陌生。我正在开发一种工具来检查您的 PC 是否符合某些规范。这包括编写和执行一个单独的批处理文件,并为 CPU 的模型包含一个 API (SIGAR)。
我的问题是,当我尝试将它导出到 eclipse 中的 Runnable JAR 时,我 运行 从命令行生成的 JAR,它给了我很多 'DLL not included in build path' 异常。在构建路径中包含包含 API DLL 的文件夹后,我得到了类似的异常。修复它的方法是将包含 DLL 的文件夹添加到高级系统设置中的环境变量 (PATH)。
问题:
JAR 现在在我的电脑上运行良好,但是下载 JAR 的用户呢?他们是否还需要将 DLL 添加到环境变量中?如果是这样,JAR 有没有办法为他们做到这一点?
我的 JAR 不会 运行 双击,但会 运行 从命令行。有什么办法可以解决这个问题,让下载 JAR 的用户也能受益?
如果用户下载该工具但由于他们没有正确版本的 JRE 而无法 运行,该工具会通知他们吗?如果没有,是否有办法绕过用户必须更新 JRE 或包装为 EXE 就足够了?
提前致谢,非常感谢。很多问题。
Q1: The JAR now works fine on my computer, but what about the users
who download the JAR? Will they also need to add the DLL to
environment variables? If so is there a way the JAR can do that for
them?
您可以将 DLL 放入 JAR 文件中:
- How to make a JAR file that includes DLL files?(提示:完整阅读两个答案...。)
但是,当您分发包含 DLL 的 JAR 时,您会遇到不同平台需要不同 DLL(或其他)的问题。即使使用 Windows,您也会遇到 32 位与 64 位 DLL 的问题。
Q2: My JAR won't run with a double-click, but will run from command
line. Is there any way around this that will carry over to users who
download the JAR too?
您无法在 JAR 文件中解决该问题。 "double-click to run" 功能由 OS 实现。提供此类功能的最佳方式是使用可双击的(特定于平台的)包装器脚本。
Q3: If the user downloads the tool and can't run it because they don't
have the right version of the JRE, will the tool notify them? If not,
is there a way around the user having to update JRE or will wrapping
as an EXE suffice?
除非您安装了 JRE,否则 JAR 文件只是一个被动的数据块。 (实际上是一个 ZIP 文件)。
如果用户的 JRE 太旧,那么 JRE 将无法加载 JAR 中的任何 类(因为类文件版本号错误),或者你会得到错误,因为失踪(系统)类.
唯一的希望是提供一个包装器脚本来启动您的应用程序,在尝试启动 JAR 之前检查 JRE 版本。
作为一般规则,如果您想做这样奇特的事情,您需要在 安装程序 中分发您的程序,而不是作为裸 JAR 文件。
我对 java 很陌生。我正在开发一种工具来检查您的 PC 是否符合某些规范。这包括编写和执行一个单独的批处理文件,并为 CPU 的模型包含一个 API (SIGAR)。
我的问题是,当我尝试将它导出到 eclipse 中的 Runnable JAR 时,我 运行 从命令行生成的 JAR,它给了我很多 'DLL not included in build path' 异常。在构建路径中包含包含 API DLL 的文件夹后,我得到了类似的异常。修复它的方法是将包含 DLL 的文件夹添加到高级系统设置中的环境变量 (PATH)。
问题:
JAR 现在在我的电脑上运行良好,但是下载 JAR 的用户呢?他们是否还需要将 DLL 添加到环境变量中?如果是这样,JAR 有没有办法为他们做到这一点?
我的 JAR 不会 运行 双击,但会 运行 从命令行。有什么办法可以解决这个问题,让下载 JAR 的用户也能受益?
如果用户下载该工具但由于他们没有正确版本的 JRE 而无法 运行,该工具会通知他们吗?如果没有,是否有办法绕过用户必须更新 JRE 或包装为 EXE 就足够了?
提前致谢,非常感谢。很多问题。
Q1: The JAR now works fine on my computer, but what about the users who download the JAR? Will they also need to add the DLL to environment variables? If so is there a way the JAR can do that for them?
您可以将 DLL 放入 JAR 文件中:
- How to make a JAR file that includes DLL files?(提示:完整阅读两个答案...。)
但是,当您分发包含 DLL 的 JAR 时,您会遇到不同平台需要不同 DLL(或其他)的问题。即使使用 Windows,您也会遇到 32 位与 64 位 DLL 的问题。
Q2: My JAR won't run with a double-click, but will run from command line. Is there any way around this that will carry over to users who download the JAR too?
您无法在 JAR 文件中解决该问题。 "double-click to run" 功能由 OS 实现。提供此类功能的最佳方式是使用可双击的(特定于平台的)包装器脚本。
Q3: If the user downloads the tool and can't run it because they don't have the right version of the JRE, will the tool notify them? If not, is there a way around the user having to update JRE or will wrapping as an EXE suffice?
除非您安装了 JRE,否则 JAR 文件只是一个被动的数据块。 (实际上是一个 ZIP 文件)。
如果用户的 JRE 太旧,那么 JRE 将无法加载 JAR 中的任何 类(因为类文件版本号错误),或者你会得到错误,因为失踪(系统)类.
唯一的希望是提供一个包装器脚本来启动您的应用程序,在尝试启动 JAR 之前检查 JRE 版本。
作为一般规则,如果您想做这样奇特的事情,您需要在 安装程序 中分发您的程序,而不是作为裸 JAR 文件。