I have a third-party library (tibco smartsockets in java) that works in a java console app but when calling the same code inside a Spring Boot Controller or a Bean, it would throw a
java.lang.IllegalAccessError: tried to access field com.smartsockets.TipcMsgImpl.j from class com.smartsockets.TipcConnClientImpl.
Decompiling TipcMsgImpl class and look at field j, it's declared as private. My guess is that TipcConnClientImpl uses reflection to set the j field and this was allowed but when running inside a Spring Boot application, this isn't allowed. Note that calling System.getSecurityManager() returns null so there isn't any security manager being used here.