Rumah  >  Artikel  >  Java  >  Penyelesaian kepada pengecualian NoSuchProviderException di Java

Penyelesaian kepada pengecualian NoSuchProviderException di Java

王林
王林asal
2023-06-25 08:58:362057semak imbas

Semasa pembangunan Java, apabila kami menggunakan beberapa algoritma penyulitan atau alatan penyulitan tertentu, kami mungkin menghadapi pengecualian NoSuchProviderException. Pengecualian ini biasanya disebabkan oleh pembekal penyulitan yang diperlukan tidak ditemui. Artikel ini akan memperkenalkan punca dan penyelesaian NoSuchProviderException.

1. Sebab pengecualian

Sebab pengecualian NoSuchProviderException ialah pembekal penyulitan yang diperlukan tidak boleh ditemui dalam seni bina penyulitan Java. Java menyokong banyak penyedia penyulitan seperti SunJCE, SunJSSE, dll. Jika kami menggunakan pembekal penyulitan yang tidak disokong dalam kod kami, atau pembekal penyulitan tidak wujud dalam persekitaran masa jalan, NoSuchProviderException akan dibuang.

2. Penyelesaian pengecualian

Cara untuk menyelesaikan pengecualian NoSuchProviderException ialah dengan menentukan penyedia penyulitan yang diperlukan dalam Java. Kita boleh memilih untuk menentukan pembekal yang diperlukan secara manual dalam kod atau dalam fail keselamatan dalam direktori pemasangan Java. Di bawah ini kami akan memperkenalkan kedua-dua penyelesaian ini masing-masing.

  1. Tentukan pembekal secara manual

Kami boleh menggunakan kaedah Security.addProvider() dalam kod untuk menambah pembekal yang diperlukan secara manual. Contohnya, apabila kami menggunakan pustaka penyulitan Bouncy Castle, kami boleh menggunakan kod berikut untuk menentukan pembekal secara manual:

Security.addProvider(new BouncyCastleProvider());

Kaedah ini akan menambah perpustakaan penyulitan Bouncy Castle pada persekitaran masa jalan Java, dengan itu memastikan kod kami boleh menggunakan Fungsi algoritma penyulitan penyedia Bouncy Castle.

  1. Nyatakan pembekal dalam fail keselamatan

Terdapat folder bernama keselamatan dalam direktori pemasangan Java Fail java.security dalam folder ini ialah fail konfigurasi seni bina penyulitan Java. Kami boleh menambah pembekal yang diperlukan dalam fail ini supaya persekitaran masa jalan Java boleh memuatkannya secara automatik.

Pertama, kita perlu mencari di mana fail java.security berada. Untuk sistem pengendalian Windows, ia biasanya terletak di bawah laluan %JAVA_HOME%jrelibsecurity untuk sistem pengendalian Linux, ia biasanya terletak di bawah laluan /usr/lib/jvm/java-3d689bd3819ead35ed794427bd12f459-openjdk-7147c5b67cc366823883b8b9a96f4d30/; jre/lib/security Down. Antaranya, f68c126daefa5e6dcc8c681069d8cb0a ialah nombor versi Java dan 7147c5b67cc366823883b8b9a96f4d30

Buka fail java.security, cari baris security.provider.1, dan tukarkannya kepada bentuk berikut:

security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider

Kaedah ini akan memuatkan penyedia Bouncy Castle dalam persekitaran masa jalan Java, membenarkan kod kami menggunakan Penyulitan Bouncy fungsi algoritma yang disediakan oleh Castle.

Summary

NoSuchProviderException ialah pengecualian biasa dalam seni bina penyulitan Java, biasanya disebabkan oleh pembekal penyulitan yang diperlukan tidak ditemui. Cara untuk menyelesaikan pengecualian ini adalah dengan menentukan penyedia penyulitan yang diperlukan dalam Java Kita boleh memilih untuk menentukan pembekal secara manual atau menentukan pembekal dalam fail keselamatan. Tidak kira kaedah mana pun, mereka boleh membantu kami menyelesaikan pengecualian NoSuchProviderException supaya kod kami berjaya menggunakan fungsi algoritma penyulitan yang kami perlukan.

Atas ialah kandungan terperinci Penyelesaian kepada pengecualian NoSuchProviderException di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn