我想创建c库并在Linux操作系统上的java代码中使用它。我试图理解并实现自然图书馆的概念。
我正在学习这个教程
http://diglib.stanford.edu:8091/~testbed/doc/JavaUsage/JNI/tutorial.txt
这有助于我理解一点概念。但是,当我试图自己做的时候,我会犯错误。我为我得到的错误感到焦灼,但没有任何解决办法。
我为自然库编写的主要类代码和类如下:
package natLib;
import natLib.getKeyPressed;
public class main {
public static void main(String[] args) {
getKeyPressed natlab=new getKeyPressed();
char c=natlab.keyboardPressedKey();
}
}
package natLib;
public class getKeyPressed {
static {
System.loadLibrary("natlab");
}
public native char keyboardPressedKey();
}
当我写“javac main.java”时
我会犯错误,比如
“main.java:6:错误:找不到符号
getKeyPressed natlab=新建getKeyPressed();“
当我跳过main并使用native方法对类执行javac prcess时,尝试获取一个头文件
javah-jni getKeyPressed.class类
尽管有一个名为getKeyPressed.class的文件,但我会得到如下错误:
"Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: getKeyPressed.class"
我没有试过。它说的是班级扩展
"Error: Could not find class file for 'getKeyPressed'."
它说即使我通过复制getKeyPressed.class来生成getKeyPressed类文件。
我好像犯了个大错误,有什么建议可以解决这个问题吗?
最佳答案
javah需要一个完全限定的类名。(例如,natLib.getKeyPressed,而不仅仅是getKeyPressed)