为什么我们会收到 AssertionFailedError ?
我有以下代码:
TableViewer tv = new TableViewer(attributeTable);
tv.setContentProvider(new BOAttributeTableContentProvider());
tv.setLabelProvider(new BOAttributeTableLabelProvider());
在设置标签提供程序时,我收到 AssertionFailedError
。谁能告诉我我在这里做错了什么?或者在什么情况下会抛出此错误?
错误日志:
org.eclipse.jface.util.Assert$AssertionFailedException: null argument;
at org.eclipse.jface.util.Assert.isNotNull(Assert.java:150)
at org.eclipse.jface.util.Assert.isNotNull(Assert.java:126)
at org.eclipse.jface.viewers.StructuredViewer.disassociate(StructuredViewer.java:615)
at org.eclipse.jface.viewers.TableViewer.internalRefreshAll(TableViewer.java:904)
at org.eclipse.jface.viewers.TableViewer.internalRefresh(TableViewer.java:818)
at org.eclipse.jface.viewers.TableViewer.internalRefresh(TableViewer.java:807)
at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1388)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1323)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1386)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1345)
at org.eclipse.jface.viewers.ContentViewer.setLabelProvider(ContentViewer.java:281)
at org.eclipse.jface.viewers.StructuredViewer.setLabelProvider(StructuredViewer.java:2003)
at org.eclipse.jface.viewers.TableViewer.setLabelProvider(TableViewer.java:1086)
at com.misys.bankfusion.bpdesigner.boeditor.pages.BOAttributesPage.populateAttributeTableContents(BOAttributesPage.java:458)
at com.misys.bankfusion.bpdesigner.boeditor.pages.BOAttributesPage.access$000(BOAttributesPage.java:128)
at com.misys.bankfusion.bpdesigner.boeditor.pages.BOAttributesPage$1.setToModel(BOAttributesPage.java:341)
at com.trapedza.bankfusion.editor.AbstractEditorDelegate.updateData(AbstractEditorDelegate.java:173)
at com.trapedza.bankfusion.editor.AbstractEditorDelegate$1.dialogFieldChanged(AbstractEditorDelegate.java:181)
at com.trapedza.bankfusion.utils.dialogs.internal.DialogField.dialogFieldChanged(DialogField.java:132)
at com.trapedza.bankfusion.utils.dialogs.internal.ListBoxDialogField.doModifySelection(ListBoxDialogField.java:51)
at com.trapedza.bankfusion.utils.dialogs.internal.ComboDialogField$2.widgetSelected(ComboDialogField.java:153)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
I have the following piece of code:
TableViewer tv = new TableViewer(attributeTable);
tv.setContentProvider(new BOAttributeTableContentProvider());
tv.setLabelProvider(new BOAttributeTableLabelProvider());
where while setting the label provider i am getting AssertionFailedError
. can anybody tell me what wrong i am doing here? or in which case it throws this error?
error Log:
org.eclipse.jface.util.Assert$AssertionFailedException: null argument;
at org.eclipse.jface.util.Assert.isNotNull(Assert.java:150)
at org.eclipse.jface.util.Assert.isNotNull(Assert.java:126)
at org.eclipse.jface.viewers.StructuredViewer.disassociate(StructuredViewer.java:615)
at org.eclipse.jface.viewers.TableViewer.internalRefreshAll(TableViewer.java:904)
at org.eclipse.jface.viewers.TableViewer.internalRefresh(TableViewer.java:818)
at org.eclipse.jface.viewers.TableViewer.internalRefresh(TableViewer.java:807)
at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1388)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1323)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1386)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1345)
at org.eclipse.jface.viewers.ContentViewer.setLabelProvider(ContentViewer.java:281)
at org.eclipse.jface.viewers.StructuredViewer.setLabelProvider(StructuredViewer.java:2003)
at org.eclipse.jface.viewers.TableViewer.setLabelProvider(TableViewer.java:1086)
at com.misys.bankfusion.bpdesigner.boeditor.pages.BOAttributesPage.populateAttributeTableContents(BOAttributesPage.java:458)
at com.misys.bankfusion.bpdesigner.boeditor.pages.BOAttributesPage.access$000(BOAttributesPage.java:128)
at com.misys.bankfusion.bpdesigner.boeditor.pages.BOAttributesPage$1.setToModel(BOAttributesPage.java:341)
at com.trapedza.bankfusion.editor.AbstractEditorDelegate.updateData(AbstractEditorDelegate.java:173)
at com.trapedza.bankfusion.editor.AbstractEditorDelegate$1.dialogFieldChanged(AbstractEditorDelegate.java:181)
at com.trapedza.bankfusion.utils.dialogs.internal.DialogField.dialogFieldChanged(DialogField.java:132)
at com.trapedza.bankfusion.utils.dialogs.internal.ListBoxDialogField.doModifySelection(ListBoxDialogField.java:51)
at com.trapedza.bankfusion.utils.dialogs.internal.ComboDialogField$2.widgetSelected(ComboDialogField.java:153)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
确保方法名称开头的“test”是小写的。如果您说 TestMethod,您将收到此错误消息。你应该说测试方法。
例如:
这对我有用,我希望它对你也有用
Make sure the "test" at the beginning of the method name is lower case. If you say TestMethod you will get this error message. You should say testMethod.
For example:
This works for me and I hope it will work for you
您正在使用的构造函数 (
TableViewer
) 或两个设置器 (setContentProvider
、setLabelProvider
) 具有保护assert
语句抛出这些异常。代码的作者有一个想法,可以保护其代码免受您在调用她/他的代码时使用的不规则参数的影响。Constructor that you are using (
TableViewer
) or two setters (setContentProvider
,setLabelProvider
) have guardingassert
statements which are throwing these exceptions. Author of the code had an idea to protect its code from irregular parameters that you are using when invoking her/his code.堆栈跟踪显示,您从 'BOAttributesPage.populateAttributeTableContents()' 调用 'TableViewer.setLabelProvider()' 最终导致调用 'org.eclipse。 jface.viewers.StructuredViewer.disassociate()' 带有 null 参数,并且该方法将输入参数限制为非 null。
The stack trace shows that your call to 'TableViewer.setLabelProvider()' from 'BOAttributesPage.populateAttributeTableContents()' eventually results in call to 'org.eclipse.jface.viewers.StructuredViewer.disassociate()' with null argument and that method constraints input argument to be not-null.
看起来 BOAttributeTableContentProvider 在某处提供了一个 null 对象(您尝试在表中显示的元素之一为 null)。
调试内容提供程序。希望我迟来的回答能有所帮助。
It looks like BOAttributeTableContentProvider provides a null object somewhere along line (one of the elements you are trying to display in the table is null).
Debug the content provider. Hope my late answer will help.