java - 在java中查找 native 函数的源代码

标签 java

我一直在研究如何 java.io.Console实现了 readPassword 函数,我遇到了原生的 echo 函数。出于天生的好奇,我立即着手寻找源代码。我尝试查看 jdk/src/share/native 但无济于事。在进一步谷歌搜索失败后,我求助于您。

我在哪里可以找到 native echo 函数的源代码?

最佳答案

这是http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/windows/native/java/io/Console_md.c

JNIEXPORT jboolean JNICALL
Java_java_io_Console_echo(JNIEnv *env, jclass cls, jboolean on)
{
    DWORD fdwMode;
    jboolean old;
    if (! GetConsoleMode(hStdIn, &fdwMode)) {
        JNU_ThrowIOExceptionWithLastError(env, "GetConsoleMode failed");
        return !on;
    }
    old = (fdwMode & ENABLE_ECHO_INPUT) != 0;
    if (on) {
        fdwMode |= ENABLE_ECHO_INPUT;
    } else {
        fdwMode &= ~ENABLE_ECHO_INPUT;
    }
    if (! SetConsoleMode(hStdIn, fdwMode)) {
        JNU_ThrowIOExceptionWithLastError(env, "SetConsoleMode failed");
    }
    return old;
}

关于java - 在java中查找 native 函数的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28173959/

相关文章:

java - 将两个 TableView 绑定(bind)在一起,以便它们同步滚动

Java 生成字符串的所有可能排列

java - 将加密的 Word 文档上传到 Google Cloud 存储

java - 单击 JMenuItem 时如何打开新的 JFrame 窗口

java - JBoss MBean 通知监听器问题

java - 如何知道我使用的是 Open JDK 还是 Oracle JDK?

java - HttpURL连接问题

java - 动态删除查询

java - 实体中的 Spring roo 服务 Autowiring 始终为空(使用带有 @RooJpaEntity 的 JPA 存储库)

java - Web3j v3.3.1 : Error while generating compiled solidity smart contracts which returns array of struct