Это следует делать только в том случае, если у вас есть коммерческая лицензия от Oracle, и вы не должны помещать ее в код библиотеки, чтобы другие по ошибке разблокировали ее в производственной среде без их ведома.
Во время выполнения это, вероятно,проще всего
Runtime.getRuntime().exec("jcmd " + pid + " VM.unlock_commercial_features");
В JDK 9 или новее вы можете получить pid из ProcessHandle;
ProcessHandle.current().pid()
В более ранних выпусках вы можете получить pid из RuntimeMXBean:
String jvmName = ManagementFactory.getRuntimeMXBean().getName();
int index = jvmName.indexOf("@");
String pid = jvmName.substring(0, index);
Другая альтернатива - сделать это через JMX, используя DiagnosticCommandMXBean.
ObjectName on = new ObjectName("com.sun.management:type=DiagnosticCommand");
Object[] a = new Object[] {
new String[] {
}
};
String[] sig = new String[] {"[Ljava.lang.String;"};
ManagementFactory.getPlatformMBeanServer().invoke(on, "vmUnlockCommercialFeatures", a, sig);