在Java中,我们通过调用返回long值的System.currentTimeMillis()
来获取系统时间。我们在本地网络中拥有服务器和客户端并保持它们同步,我们需要确保计算机具有相同的时间。 (+/- 10秒可以忍受)
我们需要使用java更改客户端计算机的系统时间。我们尝试使用命令提示符date -s
,但它需要管理员权限。所以它没有用。然后,我们尝试使用SetSystemTime
在kernel32
库中对Function function = Function.getFunction("kernel32", "SetSystemTime");
进行本机调用,但不知何故,我们无法使其工作。
目前,这是我们尝试运行此本机调用的方式。
Function function = Function.getFunction("kernel32", "SetSystemTime");
Object [] params = new Object [] {
"2015",
"4",
"0",
"13",
"14",
"28",
"0",
"0"
};
System.out.println("invoking...");
boolean result = (Boolean)function.invoke(Boolean.class, params);
System.out.println(result);
我们得到false
作为结果。使用JNA库。
我们的目的是修改System.currentTimeMillis()
返回的值。我们正在使用的某些第三方库使用System.currentTimeMillis()
,因此我们无法使用/创建另一个调用。
如果有人比使用JNA有更好的想法,请提出建议。实际上,我们发现仅仅为了改变系统日期/时间而导入JNA库并不高效,但这就是我们现在所拥有的。