1个回答
2013-10-21
展开全部
public class TestJni {
public native void GetTickCount();
static {
System.loadLibrary("Kernel32.dll");
}
public static void main(String[] args) {
TestJni testJni = new TestJni();
testJni.GetTickCount();
}
}
执行上面代码结果是,用java调用windowsAPI
java.lang.UnsatisfiedLinkError: no Kernel32.dll in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.TestJni. <clinit>(TestJni.java:7)
Exception in thread "main"
Java平台提供了一套自己的API。这套API中的一些平台相关的东西,比如文件的读取,则是Java虚拟机调用windows API来实现的。所以你使用Java给你提供的API就足够了,而且还保证了可以跨平台运行。
如果你非要像你说的那样做的话,就用Java中的native方法。这样你就可以用C/C++来实现Java中声明的函数了。
public native void GetTickCount();
static {
System.loadLibrary("Kernel32.dll");
}
public static void main(String[] args) {
TestJni testJni = new TestJni();
testJni.GetTickCount();
}
}
执行上面代码结果是,用java调用windowsAPI
java.lang.UnsatisfiedLinkError: no Kernel32.dll in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.TestJni. <clinit>(TestJni.java:7)
Exception in thread "main"
Java平台提供了一套自己的API。这套API中的一些平台相关的东西,比如文件的读取,则是Java虚拟机调用windows API来实现的。所以你使用Java给你提供的API就足够了,而且还保证了可以跨平台运行。
如果你非要像你说的那样做的话,就用Java中的native方法。这样你就可以用C/C++来实现Java中声明的函数了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询