我有一个在Windows启动时运行的Java JAR程序。它需要记录计算机打开的时间,因此它自然只是调用main
方法的时间。工作正常。
但是,我们安装该程序的一些计算机非常(非常)慢。毫不奇怪,在打开电脑几分钟后,程序的启动可能会发生。
10-15秒的不准确度是可以接受的(我们最新的计算机)。但最古老的那两三分钟并不是这样。
是否有合理的方法来确定计算机开机的时间?使用Java?
我确实意识到,对于这种工作,Java是一个糟糕的选择。众所周知,Java启动并不是特别快。无论如何,我会问这个,因为程序已经完成了Java - 但是如果没有解决方案,我将使用C ++版本。
窗。
答案 0 :(得分:2)
有several options在Windows上找到这个:
systeminfo | find /i "Boot Time"
(如@Robert所述,这仅适用于英语Windows安装)
或
wmic os get lastbootuptime
或
net statistics workstation
只需使用Runtime.getRuntime().exec("command");
来调用命令。
答案 1 :(得分:1)
如何编写简短的* .bat文件,只有一个功能 - 启动后将实际时间写入文件。
加载Java程序时,它首先尝试读取文件并找出计算机启动的时间。
也许更好的主意 - 通过.bat文件启动你的程序。首先获取实际时间并将其保存到变量,然后使用此变量的值作为参数启动程序。当程序打开时,它将首先在main方法中接收启动时间。
答案 2 :(得分:0)
您可以尝试从Java(使用Runtime.getRuntime().exec(...)
)启动一个命令,该命令将为您提供确切的机器启动时间(systeminfo
)或正常运行时间(有一个Microsoft实用程序uptime.exe)。
答案 3 :(得分:-2)
这不是与java相关的问题。
这是一个与操作系统有关的问题。
如果您的操作系统具有为您提供此信息的功能,则可以调用该功能
从java调用os函数的代码是
Runtime.getRuntime().exec("command");
在linux中,获取上次启动信息的命令行命令如下:
last reboot | head -1
正如我所说,它取决于操作系统到操作系统。
对于Windows环境,您可以使用以下代码:
systeminfo | findstr /C:"System Boot Time"