10

符号表示什么以及(本机方法)对该java.io.FileStream.open方法有何看法?

Exception in thread "main" java.io.FileNotFoundException: line23 (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:135)
at java.io.FileInputStream.<init>(FileInputStream.java:95)
at java.io.FileReader.<init>(FileReader.java:64) at Helper.readFile(Foo5.java:74)
at Bar2.main(Bar2.java:32)
4

3 回答 3

9

当您在堆栈跟踪中看到 <init> 时,它指的是类的构造函数。

本机方法意味着该方法不是用 Java 实现的,而是用另一种低级语言(如 C 或 C++)实现的。在这种情况下,open()是一种需要低级功能的方法,这些功能因操作系统而异。

于 2013-07-23T06:32:00.577 回答
1

本机方法在JVM(Java 虚拟机)中实现。Java 开发人员不应该担心他们的实现,因为它们与虚拟机的内部工作有关。

这里java.io.FileStream.open()就是这样一个操作。

于 2013-07-23T06:38:12.760 回答
0

如果你打开类的源

java.io.FileStream

可以看到这个方法

private native void open(String name) 抛出 FileNotFoundException;

它没有任何身体。

该方法在“本机”代码中实现。也就是说,不在 JVM 中运行的代码。它通常用 C 或 C++ 编写。

本机方法通常用于与用其他编程语言编写的系统调用或库进行交互。

要获取本机方法的来源,您可能必须使用一些开源 JDK,例如 OpenJDK

于 2015-01-01T09:59:08.560 回答