Java application compiled by java 8 has code attached below.This works well if runtime jre is java 8 but this fails to load serialfilter when runtime jre 17 is used.
Java 9 has some changes in serialfilter loading logic and we have option to set serialfilter using :
ObjectInputFilter.Config.setSerialFilter(ObjectInputFilter.Config.createFilter(filter));
Но это не будет составлено из Java 8, но нам нужно придерживаться этой версии для сборки .. Каковы способы заставить JDK.SerialFilter работать во всех Java> = 8.
private void loadJavaSerializationFilter() {
final String[] systemProps = {"jdk.serialFilter"};
File file = new File(Home + "/serialfilter.txt");
if(file.exists() && !file.isDirectory()) {
try
{
byte[] fileBytes = Files.readAllBytes(file.toPath());
String filter = new String(fileBytes);
for(String systemProp: systemProps) {
String existingValue = System.getProperty(systemProp);
if(existingValue == null || existingValue.trim().isEmpty()) {
System.setProperty(systemProp, filter);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... runtime-ve