В настоящее время я работаю над школьным проектом.Целью этого проекта является получение данных с Сервера и запись данных на Сервер.Для этого я использую Sockets и ServerSockets.Для шифрования сообщений я использую кодек Apache Commons 1.9.
(Сервер - это файл Java .jar, выполняемый на сервере Ubuntu, а клиент - приложение для Android)
Сервер /Клиент
Для шифрования сообщений, которыми я обмениваюсь открытыми ключами.
private void Schluesselaustausch() {
try {
GenerateKeys gk = new GenerateKeys(4069);
gk.createKeys();
ServerPrivateKey = gk.getPrivateKey();
ObjectOutputStream oos = new ObjectOutputStream(clientSocket.getOutputStream());
oos.writeObject(gk.getPublicKey());
oos.flush();
ObjectInputStream ois = new ObjectInputStream(clientSocket.getInputStream());
Object obj = ois.readObject();
ClientPublicKey = (PublicKey) obj; //Line 108
} catch (Exception e) {
e.printStackTrace();
}
}
Ошибка возникает, когда объект преобразуется в PublicKey (строка 108).
Клиент выполняет ту же функцию, но получает и отправляет объект.
Ошибка
java.lang.ClassNotFoundException: com.android.org.conscrypt.OpenSSLRSAPublicKey
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:374)
at java.base/java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:685)
at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1879)
at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1765)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2053)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1587)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
at Engine.ClientVerbindung.Schluesselaustausch(ClientVerbindung.java:108)
at Engine.ClientVerbindung.run(ClientVerbindung.java:49)
Существует еще
Теперь странная часть: все работает, если я использую клиент, работающий на ПК.Поэтому я понял, что мой сервер был написан на Java 10, но на моем Ubuntu Server была установлена Java 11.Я понизил Java и протестировал его снова.Ничего не изменилось.
Мои вопросы
Есть ли ошибка в Android?Нужно ли обновлять Java до 11?В чем проблема?
Спасибо за помощь.RT