我在使用Gradle构建的应用程序中遇到以下异常,并使用AspectJ。在Eclipse中从开始,但无法启动一次建有摇篮的时候 的应用程序正常工作:Chronicle Map:ClassNotFoundException with Gradle&AspectJ
Caused by: java.lang.AssertionError: java.lang.ClassNotFoundException: net.openhft.chronicle.hash.VanillaGlobalMutableState$$Native
at net.openhft.chronicle.values.ValueModel.createClass(ValueModel.java:313) ~[chronicle-values-1.0.3-alpha.jar!/:na]
at net.openhft.chronicle.values.ValueModel.createNativeClass(ValueModel.java:286) ~[chronicle-values-1.0.3-alpha.jar!/:na]
at net.openhft.chronicle.values.ValueModel.nativeClass(ValueModel.java:268) ~[chronicle-values-1.0.3-alpha.jar!/:na]
at net.openhft.chronicle.values.Values.nativeClassFor(Values.java:51) ~[chronicle-values-1.0.3-alpha.jar!/:na]
at net.openhft.chronicle.values.Values.newNativeReference(Values.java:38) ~[chronicle-values-1.0.3-alpha.jar!/:na]
at net.openhft.chronicle.hash.impl.VanillaChronicleHash.createGlobalMutableState(VanillaChronicleHash.java:324) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.hash.impl.VanillaChronicleHash.initOwnTransients(VanillaChronicleHash.java:373) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.hash.impl.VanillaChronicleHash.initTransients(VanillaChronicleHash.java:369) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.VanillaChronicleMap.initTransients(VanillaChronicleMap.java:146) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.VanillaChronicleMap.<init>(VanillaChronicleMap.java:102) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder.newMap(ChronicleMapBuilder.java:1703) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder.lambda$createWithFile$93(ChronicleMapBuilder.java:1449) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder$$Lambda$7/78866071.fileIOAction(Unknown Source) ~[na:na]
at net.openhft.chronicle.map.ChronicleMapBuilder.lambda$fileLockedIO$92(ChronicleMapBuilder.java:182) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder$$Lambda$8/862681096.apply(Unknown Source) ~[na:na]
at java.util.concurrent.ConcurrentHashMap.compute(Unknown Source) ~[na:1.8.0_45]
at net.openhft.chronicle.map.ChronicleMapBuilder.fileLockedIO(ChronicleMapBuilder.java:179) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder.createWithFile(ChronicleMapBuilder.java:1447) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder.createPersistedTo(ChronicleMapBuilder.java:1400) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
在我的build.gradle我:
compile "net.openhft:chronicle-map:3.5.0-rc"
我也与早期版本的尝试这个, 没有成功。
一件事在Eclipse启动时,我注意到的是,这个新的警告时显示纪事拳头访问:
warning: Supported source version 'RELEASE_7' from annotation processor 'org.neo4j.kernel.impl.annotations.ServiceProcessor' less than -source '1.8'
warning: Supported source version 'RELEASE_7' from annotation processor 'org.neo4j.kernel.impl.annotations.DocumentationProcessor' less than -source '1.8'
,但我不知道这是相关的。 我是否缺少一些其他的依赖?
编辑:我还应该提到我使用Spring并且我的Chronicle地图被实例化为Spring bean的一部分。
编辑2:调试日志没有产生任何有用的东西。接下来我会尝试降级到旧版本的编年图。
编辑3:用新的3.6.0-RC同样的错误
编辑5:它与
compile "net.openhft:chronicle-map:2.4.12"
编辑4号楼工程时我有
compile files(org.gradle.internal.jvm.Jvm.current().getToolsJar())
在我的构建.gradle为了添加tools.jar(Gradle没有提供afaik)。它也是我开始生成的(胖)jar文件的一部分。
我见过类似的问题,当使用'net.openhft:compiler:2.2.2'依赖时,'net.openhft:compiler:2.2.1'没有问题。我不知道这个问题的原因,但我怀疑它可能与OSGi和类加载有关。另外,如果您尝试以'-ea'(启用断言)开始,将Slf4j配置为最大冗余级别并粘贴其他输出,这将会很有帮助。 – leventov
'-Dorg.slf4j.simpleLogger.defaultLogLevel = debug' – leventov
关于编辑3:毫不奇怪,因为Chronicle Map 2.x不使用动态类加载。 – leventov