编年史地图:ClassNotFoundException 与 Gradle & AspectJ
Chronicle-Map: ClassNotFoundException with Gradle & AspectJ
我在使用 Gradle 构建并使用 AspectJ 的应用程序中遇到了以下异常。
该应用程序在从 Eclipse 中启动时运行良好,但一旦使用 Gradle:
构建就无法启动
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(ChronicleMapBuilder.java:1449) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder$$Lambda/78866071.fileIOAction(Unknown Source) ~[na:na]
at net.openhft.chronicle.map.ChronicleMapBuilder.lambda$fileLockedIO(ChronicleMapBuilder.java:182) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder$$Lambda/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 启动时我注意到的一件事是,当第一次访问 Chronicle 时会出现这个新警告:
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:使用
构建时有效
compile "net.openhft:chronicle-map:2.4.12"
编辑 4:与新的 3.6.0-rc 相同的错误
编辑 5:我有
compile files(org.gradle.internal.jvm.Jvm.current().getToolsJar())
在我的 build.gradle 中添加 tools.jar(Gradle 没有提供 afaik)。它也是我开始生成的(胖)jar 文件的一部分。
Chronicle 地图版本 3.7.0-rc
没有这个问题。它会发出一些无害警告,这些警告将在下一个发布版本中消失。
我在使用 Gradle 构建并使用 AspectJ 的应用程序中遇到了以下异常。 该应用程序在从 Eclipse 中启动时运行良好,但一旦使用 Gradle:
构建就无法启动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(ChronicleMapBuilder.java:1449) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder$$Lambda/78866071.fileIOAction(Unknown Source) ~[na:na]
at net.openhft.chronicle.map.ChronicleMapBuilder.lambda$fileLockedIO(ChronicleMapBuilder.java:182) ~[chronicle-map-3.5.0-rc.jar!/:3.5.0-rc]
at net.openhft.chronicle.map.ChronicleMapBuilder$$Lambda/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 启动时我注意到的一件事是,当第一次访问 Chronicle 时会出现这个新警告:
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:使用
构建时有效compile "net.openhft:chronicle-map:2.4.12"
编辑 4:与新的 3.6.0-rc 相同的错误
编辑 5:我有
compile files(org.gradle.internal.jvm.Jvm.current().getToolsJar())
在我的 build.gradle 中添加 tools.jar(Gradle 没有提供 afaik)。它也是我开始生成的(胖)jar 文件的一部分。
Chronicle 地图版本 3.7.0-rc
没有这个问题。它会发出一些无害警告,这些警告将在下一个发布版本中消失。