- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在插件启动后立即显示一条消息。如果我将我的代码放在 Activator.start()
方法的末尾,我会收到一个错误(可能是因为所需的资源尚未加载)。
错误看起来像这样:
!MESSAGE While loading class "de.stefansurkamp.package.ClassIWantToLoad", thread "Thread[main,6,main]" timed out waiting (5006ms) for thread "Thread[Worker-2,5,main]" to finish starting bundle "MyPlugin_1.0.0.qualifier [302]". To avoid deadlock, thread "Thread[main,6,main]" is proceeding but "de.stefansurkamp.package.ClassIWantToLoad" may not be fully initialized.
!STACK 0
org.osgi.framework.BundleException: State change in progress for bundle "reference:file:/C:/Users/Stefan/workspace/MyPlugin/" by thread "Worker-2".
at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1088)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:298)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:478)
at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:109)
[...]
Caused by: org.eclipse.osgi.framework.internal.core.AbstractBundle$BundleStatusException
... 53 more
Root exception:
org.eclipse.osgi.framework.internal.core.AbstractBundle$BundleStatusException
[...]
如果需要,我可以提供完整的堆栈跟踪。
那么有什么方法可以在start()
结束后立即运行吗?
编辑:使用作业和 org.eclipse.ui.startup
根据 greg 的建议,我在一个由 org.eclipse.ui.startup
扩展点加载的类中创建了一个 Job。
这是我的 earlyStartup()
方法的样子:
@Override
public void earlyStartup() {
Job clearPrefsJob = new Job("clearPrefsJob") {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
DataStorage dataStorage = new DataStorage();
dataStorage.clearPrefs();
System.out.println("Everything gone.");
}
catch (StorageException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
};
clearPrefsJob.addJobChangeListener(new IJobChangeListener() {
(All of the IchangeEvents here)
});
clearPrefsJob.setPriority(Job.BUILD);
clearPrefsJob.schedule();
我的控制台打印Everything gone.
和我正在完成的作业的调试消息(由作业更改监听器)。
但紧接着我收到一条错误消息:
!ENTRY org.eclipse.core.jobs 4 2 2014-07-29 11:53:12.481
!MESSAGE An internal error occurred during: "clearPrefsJob".
!STACK 0
java.lang.NullPointerException
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:69)
此外,我的测试环境显示以下错误消息:
'clearPrefsJob' has encountered a problem.
An internal error occured during: "clearPrefsJob".
java.lang.NullPointerException
我不知道这部分代码中的 NullPointerException 应该来自哪里,因为在使用作业之前一切正常。
解决方法:
看起来问题出在使用return null
。使用 return Status.OK_STATUS
(或类似的)时一切正常。
最佳答案
您可以在 start
方法中创建一个 Job
(org.eclipse.core.runtime.jobs.Job
) 并将其安排到跑。
如果您的代码需要与 UI 交互,请使用 UIJob
。
或者,您可以使用 org.eclipse.ui.startup
扩展点让类在 Eclipse 启动的早期运行(但这对于您想要执行的操作来说可能太早,因此作业可能仍然是必要的)。
您还可以为您的类(class)使用 OSGi 服务。
关于java - Eclipse 插件 : Run code right after startup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25005882/
我有一个 Segment 类和一个这样的段数组: private static class Segment { int number, type; Segment(in
我在 SO 中看到一些创建 multilanguage websites in JavaScript 的好建议包括 this article on JavaScript internationaliz
我们有浏览器前缀或黑客 (for Google and Safari) text-align: -webkit-right; (for Firefox) text-align:
过去几天我一直在关注这个问题,我正处于需要寻求帮助的地步。 http://cub.northnodes.com/index.php/about/mission/ 我需要立即捐赠 列一直 float 到
When I press right ctrl, I want the right shift the text will align right. When I press left ctrl le
我已经将右侧的列拆分为顶部和底部。在每个部分中,我在执行以下操作时遇到问题:我希望顶部占据左列高度的 50%,底部占据左列高度的另外 50%。 +-------------------+-------
我知道这个问题的标题很糟糕。对不起。 我有四个 div similar to this .我想要做的只是让 div 编号 2 和 4 之间的垂直空间被删除,而不改变 HTML 的结构。是否可以仅使用
我将表格设置为 100% 宽度。我会添加一个带有 php 的随机 div,有时会充满广告。我希望广告 div 位于表格的右侧和内容。我希望表格位于左侧,但仍为 100% 左右,它将填充广告 div 左
这个问题在这里已经有了答案: Bootstrap align navbar items to the right (24 个答案) 关闭 5 年前。
.floatright { float: right;margin: 0 0 10px 10px;clear: right;width:60px; height:60px; } Lorem
我正在尝试将 td 中的某些内容右对齐。 align="right"有效,但 text-align:right 无效。这是一个 jsfiddle显示这两种情况的示例。除了右对齐右列外,这两种情况是相同
在设计网站时,您认为用于特定任务的最佳图像格式是什么? 在试图找出用于特定任务的格式时,我总是发现自己处于两难境地……例如,我应该全面使用 .jpg 吗?或者,我何时以及为什么应该使用 .png? 例
我是一个 MySQL 新手,今天我尝试设置一个超过 5 行的 MySQL 调用。我不断收到语法错误,我尝试修复了几个小时,但我不知道问题出在哪里。这是代码: USE myDatabase; DELIM
这让我发疯。我有一个 div float 到另一个 div 的右侧,如下所示: Current Membership: 我有以下 css 规则: div#container { f
我有以下代码片段,它会产生不需要的“填充”区域,而填充为零。如何避免这个区域? 代码 div.left { background-color: red; max-width: 25%; f
在 C++ 中,表达式 left() = right() 求值 right() left() 按那个顺序。 right() 先行,正如已讨论过的 here. 我想不出让 right() 先走的理由。你
我有一个很小的菜单列表,当鼠标靠近时它应该会增长。在其原始状态下,菜单是右对齐的,悬停时每第二个元素向右移动并左对齐以为增加的高度腾出空间(参见 JSFiddle )。 ul { font-siz
td.myclass{ width: 6em; text-align: right; padding-right: 2em; } 如您所见,我希望单元格中的文本右对齐,距离单元
你怎么能看到 http://jsfiddle.net/73wst/ 我想在停止下开始,但我不知道如何设置它的样式。 我的 HTML: Stop Start 我的 CSS: .sta
一个大的内部 div 在一个小的外部 div 中,并且外部 div 溢出自动。但是为什么没有内部 div margin-right 和外部 div padding-right? html
我是一名优秀的程序员,十分优秀!