- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试让 Microstream 与 Quarkus 一起运行,但 Microstream 无法找到我的 DataRoot 类。 缺少类型所需类型处理程序的运行时类型:org.acme.getting.started.DataRoot
该问题仅在使用 quarkus:dev 时出现。测试(使用和不使用 @QuarkusTest 注释)并在 Docker 中运行应用程序工作正常。
2021-01-26 10:14:31,831 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application (with profile dev): one.microstream.persistence.exceptions.PersistenceException: Missing runtime type for required type handler for type: org.acme.getting.started.DataRoot
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.validateExistingType(PersistenceTypeHandlerManager.java:370)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.ensureTypeHandler(PersistenceTypeHandlerManager.java:420)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.lambda$2(PersistenceTypeHandlerManager.java:465)
at one.microstream.collections.ChainStorageStrong.iterate(ChainStorageStrong.java:1315)
at one.microstream.collections.HashEnum.iterate(HashEnum.java:650)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.ensureTypeHandlers(PersistenceTypeHandlerManager.java:464)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.ensureTypeHandlersByTypeIds(PersistenceTypeHandlerManager.java:455)
at one.microstream.storage.types.EmbeddedStorageManager$Default.ensureRequiredTypeHandlers(EmbeddedStorageManager.java:301)
at one.microstream.storage.types.EmbeddedStorageManager$Default.start(EmbeddedStorageManager.java:213)
at one.microstream.storage.types.EmbeddedStorageManager$Default.start(EmbeddedStorageManager.java:1)
at org.acme.getting.started.App.createStorageManager(App.java:48)
at org.acme.getting.started.App.storageManager(App.java:68)
at org.acme.getting.started.App.init(App.java:87)
at org.acme.getting.started.App_Observer_init_c6e577ab5da11c32214e7d0c965f6089ddc75405.notify(App_Observer_init_c6e577ab5da11c32214e7d0c965f6089ddc75405.zig:147)
at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:282)
at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:267)
at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:69)
at io.quarkus.arc.runtime.LifecycleEventRunner.fireStartupEvent(LifecycleEventRunner.java:23)
at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:60)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent-858218658.deploy_0(LifecycleEventsBuildStep$startupEvent-858218658.zig:81)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent-858218658.deploy(LifecycleEventsBuildStep$startupEvent-858218658.zig:40)
at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:620)
at io.quarkus.runtime.Application.start(Application.java:90)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:97)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:119)
at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at io.quarkus.runner.bootstrap.StartupActionImpl$3.run(StartupActionImpl.java:134)
at java.base/java.lang.Thread.run(Thread.java:832)
根据这个线程:https://forum.microstream.one/?qa=99/still-not-loading-now-using-existing-root-instead这是类加载器的问题。
将 Microstream 的 ClassloaderProvide 设置为 Thread.currentThread().getContextClassLoader(),如此处所述 https://manual.docs.microstream.one/data-store/customizing/custom-class-loader在这里 https://quarkus.io/guides/class-loading-reference没有解决问题。
如果有人知道如何解决这个问题,那就太好了。
我在 github 上有一个例子:https://github.com/fleigm/quarkus-microstream-test
最佳答案
遇到了同样的问题。通过在配置过程中添加以下行,我不再收到此错误:
// handle changing class definitions at runtime ("hot code replacement" by quarkus by running app in development mode)
foundation.onConnectionFoundation(connectionFoundation ->
connectionFoundation.setClassLoaderProvider(ClassLoaderProvider.New(Thread.currentThread().getContextClassLoader())));
“基础”是final EmbeddedStorageFoundation<?> foundation
.完整示例可以在我的 GitHub-Repository 中找到
关于java - 带有 Microstream 的 Quarkus - 类加载器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65898882/
我想知道MicroStream的序列化如何工作。 由于它被描述为“超快”,因此必须依靠代码生成,对吗?还是基于反思? 与Protobuf-Serialization相比,它的性能如何?Protobuf
遵循此代码https://github.com/microstream-one/demo-readmecorp/tree/master/core/src/main/java/com/jetstream
我正在尝试让 Microstream 与 Quarkus 一起运行,但 Microstream 无法找到我的 DataRoot 类。 缺少类型所需类型处理程序的运行时类型:org.acme.getti
我正在尝试让 Microstream 与 Quarkus 一起运行,但 Microstream 无法找到我的 DataRoot 类。 缺少类型所需类型处理程序的运行时类型:org.acme.getti
我尝试使用 RapidClipseX 和 MicroStreamDB。我生成了一个存储,在不同的表对象中导入了不同的数据。现在我想读取数据并在 RapidClipseX Grid 组件中将其可视化。
我是一名优秀的程序员,十分优秀!