我是JAVA Programming& JNI。 如何使用JNI在Java程序中调用getpid()C库函数? 我经历了以下帖子 How can a Java program get its own process ID? 但无法运行程序。 提前致谢
我写过以下程序
public class ProcessId
{
public static void main(String[] args) {
CLibrary clib = (CLibrary) Native.loadLibrary("c",Library.class);
clib.getpid();
System.out.println("Process Id is "+getpid());
}
}
我收到以下错误
1)图书馆无法解析为类型
3)对于ProcessId类型
上面提到的帖子谈论platform.jar文件。我从http://grepcode.com/snapshot/repo1.maven.org/maven2/net.java.dev.jna/platform/3.4.0下载了一个,并包含在项目库中。但它仍然没有成功..
答案 0 :(得分:1)
Mat&托马斯,谢谢你的帮助..
我设法从Java调用C库函数..
我采取了以下步骤
步骤1)从GitHub下载jna.jar。 https://github.com/twall/jna
步骤2)在项目库中添加了上面的jar文件
步骤3)编写以下代码
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
/** Simple example of native library declaration and usage. */
public class ProcessId {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
(Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
void printf(String format, Object... args);
int getpid();
}
public static void main(String[] args) {
CLibrary.INSTANCE.printf("Hello, World\n");
System.out.println("My Process id is "+ CLibrary.INSTANCE.getpid());
for (int i = 0; i < args.length; i++) {
CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
}
}
}
它的工作!!!