Migration NoClassDefFoundError:运行时迁移到java 9时,来自ehcache的sun/misc/VM

Migration NoClassDefFoundError:运行时迁移到java 9时,来自ehcache的sun/misc/VM,migration,ehcache,java-9,Migration,Ehcache,Java 9,我正在使用ehcache-core-ee-2.6.11.jar和ehcache-terracotta-ee-2.6.11.jar,得到以下异常: 还尝试了vm选项:--添加模块jdk.unsupported,但无法工作 Caused by: net.sf.ehcache.CacheException: java.lang.NoClassDefFoundError: sun/misc/VM at net.sf.ehcache.CacheManager.init(CacheManager.java:

我正在使用ehcache-core-ee-2.6.11.jar和ehcache-terracotta-ee-2.6.11.jar,得到以下异常: 还尝试了vm选项:--添加模块jdk.unsupported,但无法工作

Caused by: net.sf.ehcache.CacheException: java.lang.NoClassDefFoundError: sun/misc/VM
at net.sf.ehcache.CacheManager.init(CacheManager.java:401)
at net.sf.ehcache.CacheManager.<init>(CacheManager.java:259)
at net.sf.ehcache.CacheManager.newInstance(CacheManager.java:1037)
at net.sf.ehcache.CacheManager.newInstance(CacheManager.java:818)
at net.sf.ehcache.CacheManager.create(CacheManager.java:799)
at net.sf.ehcache.CacheManager.getInstance(CacheManager.java:833)
at com.softwareag.ecp.cache.EhcacheEngine.<init>(EhcacheEngine.java:67)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
... 61 more
Caused by: java.lang.NoClassDefFoundError: sun/misc/VM
at org.terracotta.ehcachedx.util.Vm.maxDirectMemory(Vm.java:195)
at org.terracotta.license.ehcache.LicenseManager.verifyOffHeapUsage(LicenseManager.java:148)
at net.sf.ehcache.EnterpriseFeaturesManager.createStore(EnterpriseFeaturesManager.java:117)
at net.sf.ehcache.Cache.initialise(Cache.java:1103)
at net.sf.ehcache.CacheManager.initializeEhcache(CacheManager.java:1306)
at net.sf.ehcache.CacheManager.addCacheNoCheck(CacheManager.java:1337)
at net.sf.ehcache.CacheManager.addConfiguredCaches(CacheManager.java:758)
at net.sf.ehcache.CacheManager.doInit(CacheManager.java:459)
at net.sf.ehcache.CacheManager.init(CacheManager.java:377)
... 72 more
Caused by: java.lang.ClassNotFoundException: sun.misc.VM
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
... 81 more
原因:net.sf.ehcache.CacheException:java.lang.NoClassDefFoundError:sun/misc/VM
位于net.sf.ehcache.CacheManager.init(CacheManager.java:401)
位于net.sf.ehcache.CacheManager.(CacheManager.java:259)
位于net.sf.ehcache.CacheManager.newInstance(CacheManager.java:1037)
位于net.sf.ehcache.CacheManager.newInstance(CacheManager.java:818)
位于net.sf.ehcache.CacheManager.create(CacheManager.java:799)
位于net.sf.ehcache.CacheManager.getInstance(CacheManager.java:833)
位于com.softwareag.ecp.cache.EhcacheEngine(EhcacheEngine.java:67)
位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)
位于java.base/java.lang.reflect.Constructor.newInstance(未知源)
位于org.springframework.beans.BeanUtils.InstanceClass(BeanUtils.java:142)
... 61多
原因:java.lang.NoClassDefFoundError:sun/misc/VM
位于org.terracotta.ehcachedx.util.Vm.maxDirectMemory(Vm.java:195)
在org.terracotta.license.ehcache.LicenseManager.verifyOffHeapUsage(LicenseManager.java:148)上
位于net.sf.ehcache.EnterpriseFeaturesManager.createStore(EnterpriseFeaturesManager.java:117)
在net.sf.ehcache.Cache.initialise(Cache.java:1103)
在net.sf.ehcache.CacheManager.initializeEhcache(CacheManager.java:1306)
位于net.sf.ehcache.CacheManager.addCacheNoCheck(CacheManager.java:1337)
位于net.sf.ehcache.CacheManager.addConfiguredCaches(CacheManager.java:758)
位于net.sf.ehcache.CacheManager.doInit(CacheManager.java:459)
位于net.sf.ehcache.CacheManager.init(CacheManager.java:377)
... 72多
原因:java.lang.ClassNotFoundException:sun.misc.VM
位于org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
位于org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
... 81多

版本2.6.11非常旧。一个最新的版本可能会有用。此外,您似乎还使用了企业功能。您应该向适当的支持人员咨询如何处理Java 9。

sun.misc.VM在以前的版本中是一个不受支持/未记录的/JDK内部类。它已经在JDK 9中移动(内部类可以随时重构/删除)。所以最好向ehcache提交一个bug,他们不应该直接使用这个类。谢谢。但是出于好奇,提供--add modules jdk.unsupported应该是可行的。为什么它没有按预期工作?我错过了什么吗?编译或运行类路径上的代码时,默认情况下会解析jdk.unsupported模块,因此
--添加模块jdk.unsupported
是不可操作的。问题是ehcache正在使用一个不再存在的未记录内部类(因为它已移动到另一个包)。ehcache的维护者需要修复他们的代码。谢谢@AlanBateman