Java использует системные библиотеки Linux.JAVA

Программисты JAVA общаются здесь
Anonymous
Java использует системные библиотеки Linux.

Сообщение Anonymous »

Я столкнулся со следующей проблемой:
При использовании Java 8 + Spring у меня есть следующий код:

Код: Выделить всё

@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
SecurityUtilsBase.extractNativeLibraries("/usr/lib");
}
}
и

Код: Выделить всё

@PostMapping("/decrypt")
public String decrypt(@RequestParam String value) {
try {
TestCrypt crypt = new TestCrypt();
return crypt.cypher_Damo_Decrypt_B64(value);
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
Загрузка библиотеки в TestCrypt:

Код: Выделить всё

static {
try {
System.out.println("Before System.loadLibrary..");
System.loadLibrary("testcryptjni");
} catch (UnsatisfiedLinkError var1) {
System.out.println("libmascryptjni.so load error " + var1);
}
}
В этом случае контроллер вообще не работает, и программа немедленно останавливается без какого-либо сообщения об ошибке.
Когда я изменяю основной метод и вызываю его один раз раньше, вот так:

Код: Выделить всё

@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
SecurityUtilsBase.extractNativeLibraries("/usr/lib");
TestCrypt crypt = new TestCrypt();
System.out.println(crypt.cypher_Damo_Decrypt_B64("0hKybskMef8voU8QHxQhww=="));
}
}
Тогда контроллер работает нормально. Я подозреваю, что это связано с механизмом очистки ресурсов Java.
В Java 11 эта библиотека не может работать. Почему это?

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-of-linux

Вернуться в «JAVA»