2013-07-23 62 views
9

Các ký hiệu chỉ ra điều gì và phương pháp gốc (Native method) nói gì về phương pháp java.io.FileStream.open?<init> và (Native Method) có nghĩa là gì?

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) 

Trả lời

8

Khi bạn thấy < init> trong ngăn xếp, nó đề cập đến hàm tạo của lớp.

Phương pháp gốc có nghĩa là phương pháp này không được triển khai bằng Java, nhưng bằng một ngôn ngữ cấp thấp khác như C hoặc C++. Trong trường hợp này, open() là một phương thức yêu cầu chức năng cấp thấp, khác với chức năng của hệ điều hành.

1

Phương thức gốc được triển khai trong JVM (Máy ảo Java). Nhà phát triển Java không phải lo lắng về việc triển khai của họ vì chúng liên quan đến hoạt động bên trong của máy ảo.

Ở đây java.io.FileStream.open() issuch một hoạt động.

0

Nếu bạn mở nguồn của lớp

java.io.FileStream

Bạn có thể thấy rằng phương pháp này

private void bản địa mở (String name) ném FileNotFoundException;

không có bất kỳ nội dung nào.

Phương pháp được triển khai bằng mã "gốc". Đó là, mã không chạy trong JVM. Nó thường được viết bằng C hoặc C++.

Phương pháp gốc thường được sử dụng để giao tiếp với các cuộc gọi hệ thống hoặc thư viện được viết bằng các ngôn ngữ lập trình khác.

Để lấy nguồn gốc của các phương thức gốc, có thể bạn sẽ phải sử dụng một số JDK nguồn mở như OpenJDK