50,523
社区成员
发帖
与我相关
我的任务
分享
---------------------------------------start-----------------------------------------
Exception in thread "main" java.lang.IllegalStateException: JNative library not loaded, sorry !
at org.xvolks.jnative.JNative.<init>(JNative.java:512)
at org.xvolks.jnative.JNative.<init>(JNative.java:440)
at com.test.mediainfo.MediaInfo.New(MediaInfo.java:99)
at com.test.mediainfo.MediaInfo.<init>(MediaInfo.java:88)
at com.test.mediainfo.TestMediaInfoClass.main(TestMediaInfoClass.java:13)
package com.test.jnative;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.misc.basicStructures.AbstractBasicData;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;
/**
* SystemTime
*
* typedef struct _SYSTEMTIME {
* WORD wYear;
* WORD wMonth;
* WORD wDayOfWeek;
* WORD wDay;
* WORD wHour;
* WORD wMinute;
* WORD wSecond;
* WORD wMilliseconds;
* } SYSTEMTIME,
*/
public class SystemTime extends AbstractBasicData<SystemTime> {
public short wYear;
public short wMonth;
public short wDayOfWeek;
public short wDay;
public short wHour;
public short wMinute;
public short wSecond;
public short wMilliseconds;
/**
* 分配内存,并返回指针
*/
public Pointer createPointer() throws NativeException {
pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(getSizeOf()));
return pointer;
}
/**
* 内存大小
*/
public int getSizeOf() {
return 8 * 2;
}
/**
* 获取通过内存指针解析出结果
*/
public SystemTime getValueFromPointer() throws NativeException {
wYear = getNextShort();
wMonth = getNextShort();
wDayOfWeek = getNextShort();
wDay = getNextShort();
wHour = getNextShort();
wMinute = getNextShort();
wSecond = getNextShort();
wMilliseconds = getNextShort();
return this;
}
public SystemTime() throws NativeException {
super(null);
createPointer();
}
public String toString() {
return wYear + "/" + wMonth + "/" + wDay + " at + " + wHour + ":" + wMinute + ":" + wSecond
+ ":" + wMilliseconds;
}
public static SystemTime GetSystemTime() throws NativeException, IllegalAccessException {
// 创建对象
JNative nGetSystemTime = new JNative("Kernel32.dll", "GetSystemTime");
SystemTime systemTime = new SystemTime();
// 设置参数
nGetSystemTime.setParameter(0, systemTime.getPointer());
nGetSystemTime.invoke();
// 解析结构指针内容
return systemTime.getValueFromPointer();
}
public static void main(String[] args) throws NativeException, IllegalAccessException {
System.err.println(GetSystemTime());
}
}