JNI调用C/C++方法从控制台输入密码2007-05-30 BlogJava 最近看到一个问题,如何用Java实现从控制台输入密码? 本来以为是很简单的问题,查了一下发现Java居然没提供这样一个方法。目前实现的方式有2个,一个是利用JNI来调用C/C++方法,另一个是使用多线程。 下面是使用JNI的方法: 首先,写出我们的Java类:public class JNIPasswordReader {private native String readPassword(); static { System.loadLibrary( " PasswordDLL " ); } /** */ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JNIPasswordReader reader = new JNIPasswordReader(); String pwd = reader.readPassword(); System.out.println( "
Your Password is: " + pwd); }
} 这一段使用System.loadLiberary("..");来加载本地类库,PasswordDLL是文件名,不需要加dll后缀,系统会自动辨认。编译成JNIPasswordReader.class以后,使用 javah -jni JNIPasswordReader 命令,生成一个JNIPasswordReader.h文件,文件内容如下: /**/ /* DO NOT EDIT THIS FILE - it is machine generated */ #include < jni.h > /**/ /* Header for class JNIPasswordReader */