我正在将Realm用于我的React Native应用程序。我正在使Realm实例可用于我的组件,如官方示例应用程序所示:
export default new Realm({schema: [Todo, TodoList]});。
当我随后与Jest进行测试时,我意识到只要我不打电话,该过程就不会完成
afterAll(() => {
realm.close();
});
在测试套件的末尾。
这使我考虑了是否以及何时调用realm.close()生产代码。不打电话接近会有什么后果?如果建议,关闭Realm实例的最佳方法是什么?
我在我的OSGi应用程序中观察到奇怪的行为.我基本上有几个包提供一个服务接口的实现.消费捆绑包应该使用与特定版本匹配的其中一个捆绑包的实现.
我一直试图通过首先使用服务跟踪器上的过滤器检索所有服务来实现这一目标,如下所示:
serviceTaskTracker = new ServiceTracker(bundleContext,
bundleContext.createFilter("(objectClass=*ServiceTasks)"), null);
ServiceReference[] serviceReferences = serviceTaskTracker.getServiceReferences();
Run Code Online (Sandbox Code Playgroud)
随后,我在迭代结果集
for (ServiceReference serviceReference : serviceReferences) {
Bundle currentBundle = serviceReference.getBundle();
try {
Version currentVersion = currentBundle.getVersion();
} catch (Throwable e) {
System.out.println(e);
e.printStackTrace();
}
if (currentVersion.equals(specifiedVersion)) {
service = (ServiceTasks) bundleContext.getService(serviceReference);
}
}
Run Code Online (Sandbox Code Playgroud)
现在它在调用currentBundle.getVersion()时报告"没有这样的方法错误"时崩溃了.这对我来说特别奇怪,因为我可以在Eclipse的调试模式中升级到那一行,突出显示"currentBundle.getVersion()",按CTRL + Shift + D执行它并获得提供包的预期版本.按F6再一步,它会崩溃.
currentBundle.getClass()在我调用getVersion()之前返回"(org.eclipse.osgi.framework.internal.core.BundleHost)".
stacktrace看起来像这样:
java.lang.NoSuchMethodError:org.osgi.framework.Bundle.getVersion()Lorg/osgi/framework/Version; java.lang.NoSuchMethodError:org.osgi.framework.Bundle.getVersion()Lorg/osgi/framework/Version; at de.paas.engine.adapter.activit.PaasServiceTask.getServiceTaskService(PaasServiceTask.java:69)at de.paas.servicetasks.exampleprocess.SendMailTask.paasExecute(SendMailTask.java:58)at de.paas.engine.adapter.activiti .PaasServiceTask.execute(PaasServiceTask.java:119)org.activiti.engine.impl.bpmn.helper.ClassDelegate.execute(ClassDelegate.java:115)atg.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute (AtomicOperationActivityExecute.java:44)org.activiti.engine.impl.interctor.CommandContext.performOperation(CommandContext.java:77)org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:530) )org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:525)org.activiti.engine.pvm.runtime.AtomicOperationTransitionNotifyListenerStart.eventNotificationsCompleted(AtomicOperationTransitionNotifyListenerStart.java:52)at org. activiti.engine.impl.pvm.runtime.Abstrac orE.activiti.engine.impl.permpl上的orE.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:77)中的tEventAtomicOperation.execute(AbstractEventAtomicOperation.java:56).ExecutionEntity.performOperationSync(ExecutionEntity. java:530)org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:525)at org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:49)在org.activiti.engine的org.activiti.engine.impl.interceptor.Command.permplOperation(CommandContext.java:77)org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:530) org.activiti.engine.impl.interceptor上的org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionCreateScope.execute(AtomicOperationTransitionCreateScope.java:49)中的.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:525) .CommandContext.perform 操作(CommandContext.java:77)org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:530)org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity. java:525)org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerTake.execute(AtomicOperationTransitionNotifyListenerTake.java:65)org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:77)at org .activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:530)在org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:525)在org.activiti.engine位于org.activiti.engine.impl.persistence.entity的org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:77)的.impl.pvm.runtime.AtomicOperationTransitionDestroyScope.execute(AtomicOperationTransitionDestroyScope.java:115) .ExecutionEntity.performOperationSync(ExecutionEntity.java:530)在org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:525)在org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerEnd.eventNotificationsCompleted(AtomicOperationTransitionNotifyListenerEnd. java:36)org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:56)org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:77)at org .activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:530)在org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:525)在org.activiti.engine位于org.activiti.engine.impl.persistence.entity的org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:77)的.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:49)位于org.activiti.engine.impl.persistence.entity.ExecutionEntity.take的org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:525)的.ExecutionEntity.performOperationSync(ExecutionEntity.java:530) (ExecutionEntity.java:365)org.activiti.engine.bpmn.behavior.ExclusiveGatewayActivityBehavior.leave(ExclusiveGatewayActivityBehavior.java:74)at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.execute(FlowNodeActivityBehavior.java) :36)atg.activiti.engine.imp.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:44)org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:77)at …