7

我花了很多时间弄清楚如何使用 RSE 插件从本地 Eclipse 运行远程 Java 程序。

我能够使用 RSE 通过 eclipse 连接到我的远程机器,并且在Create Remote Project对 eclipse 上的远程 maven 项目进行Remote System Explorer透视后,我可以在 Java Perspective 下看到我的项目。

现在在Java Perspective下,当我继续创建一个构成Hello World程序的简单java文件时,它会抛出一个错误,

我花了整整一天的时间来弄清楚问题出在哪里。如果有人以前遇到过这个问题,或者可以对这个问题有所了解,那将是非常可观的。

另外,如果您需要更多信息,请告诉我?

感谢 工作空间.metadata目录中.log的回溯

!ENTRY org.eclipse.core.jobs 4 2 2013-08-18 01:19:20.101 !MESSAGE An internal error 
occurred during: "Launching abc". !STACK 0 java.lang.NullPointerException at 

org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate.getDefaultWorkingDirectory
(AbstractJavaLaunchConfigurationDelegate.java:995) at 
org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate.verifyWorkingDirectory(AbstractJavaLaunchConfigurationDelegate.java:684) at 
org.eclipse.jdt.launching.JavaLaunchDelegate.launch(JavaLaunchDelegate.java:53) at 
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855) at 
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704) at 
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1047) at  org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1251) at 
org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

新空指针异常的 .log 回溯

!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.NullPointerException
        at org.eclipse.rse.ui.view.SystemTableViewProvider.getText(SystemTableViewProvider.java:221)
        at org.eclipse.jface.viewers.DecoratingLabelProvider.getText(DecoratingLabelProvider.java:129)
        at org.eclipse.rse.internal.ui.view.SystemDecoratingLabelProvider.getColumnText(SystemDecoratingLabelProvider.java:55)
        at org.eclipse.jface.viewers.TableColumnViewerLabelProvider.update(TableColumnViewerLabelProvider.java:70)
        at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152)
        at org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:399)
        at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
        at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
        at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2167)
        at org.eclipse.jface.viewers.StructuredViewer.internalUpdate(StructuredViewer.java:2150)
        at org.eclipse.jface.viewers.StructuredViewer.update(StructuredViewer.java:2089)
        at org.eclipse.jface.viewers.ColumnViewer.update(ColumnViewer.java:554)
        at org.eclipse.jface.viewers.StructuredViewer.update(StructuredViewer.java:2033)
        at org.eclipse.jface.viewers.StructuredViewer.handleLabelProviderChanged(StructuredViewer.java:1191)
        at org.eclipse.jface.viewers.ContentViewer$1.labelProviderChanged(ContentViewer.java:97)
        at org.eclipse.ui.internal.decorators.DecoratorManager$1.run(DecoratorManager.java:430)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.decorators.DecoratorManager.fireListener(DecoratorManager.java:428)
        at org.eclipse.ui.internal.decorators.DecorationScheduler$3.runInUIThread(DecorationScheduler.java:530)
        at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3946)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3623)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
4

4 回答 4

0

尝试卸载插件并查看。根据您拥有的 eclipse 版本,卸载过程略有不同。

如果您打开了属于此插件的任何视图、编辑器、透视图,请确保在执行以下操作之前关闭所有这些。

这里有几个链接:

http://wiki.eclipse.org/FAQ_How_do_I_remove_a_plug-in%3F:这也显示了如何禁用插件

暂时禁用 Eclipse 插件

如果一切都失败了,您可以从 eclipse 目录中物理删除插件并重新启动它。 在 Eclipse 中禁用插件

于 2013-08-22T17:37:49.910 回答
0

我会启动 Wireshark 来检查网络上到底发生了什么。事实上,你在暴风雪中盲目飞行。使用 Wireshark,您可能仍处于暴风雪中,但至少您不会盲目飞行。

于 2013-08-21T18:09:37.267 回答
0

您在此处提供的信息有些不完整,但是鉴于您尝试解决这种情况的步骤,我将做出一些假设:

  1. 您安装了插件并将 RSE 设置为附加到远程项目,而无需为其创建团队配置文件。

  2. 您选择使用的插件违反最佳实践,直接实现了 RSE 子系统,而没有实现它自己的服务层。

  3. 然后,您完成了工作/更新了远程项目的版本/或删除了远程项目的链接。

注意:我不能确切地说你做了什么,可能有很多事情,但最终结果是你将一个不稳定的资源附加到你的私人配置文件中,并且该资源变得不可用。

我怎么知道这个?

  1. 没有实现自己的服务层区域的 RSE 子系统需要从 getServiceType() 调用返回 null —— 堆栈跟踪的开始。

  2. 必须显式创建公共团队配置文件,而自动创建私有配置文件。更多关于这里

  3. UIPlugin 组件是从工作线程和 RSE UI 插件到 RSE 子系统到 RSE 基础 API 服务层的一个调用,将生成此堆栈跟踪签名。

  4. 启动委托尝试启动一个配置,该配置对您的配置文件的源查找调用失败 - 您的堆栈跟踪结束。

要了解发生了什么,您需要知道每个 RSE 资源都附加到配置文件,并且这些配置文件将包含: 1. 连接——包括子系统属性。2. 过滤器、过滤器池和过滤器池引用 3. 与配置文件关联的其他数据

配置文件可以是活动的或非活动的。远程系统资源管理器显示来自所有活动配置文件的所有连接,并在连接内允许从任何活动配置文件引用过滤器池。

但是,有一个关键点您的私人资料不能被删除或无效。

这意味着,如果您没有创建可以禁用的团队配置文件,并且您的 RSE 插件没有实现它自己的服务层以实现正常故障并且该资源变得不可用,那么您将无法启动配置配置文件——永远——因此你的问题。

因此,不必担心重新安装插件可以做到这一点(或找到更好的插件),只需确保将任何远程资源附加到项目特定的团队配置文件。然后,您可以使用团队视图通过使各种配置文件处于活动或非活动状态来控制在您的工作区中显示哪些配置文件。

您可以在RSE 开发人员指南中找到更多相关信息

编辑:跟进

不幸的是,看起来它实际上与您之前通过不同的调用链遇到的错误相同。当您设置团队配置文件时,您没有删除/卸载 RSE 插件的所有组件。因此,UI 装饰器尝试为您构建远程资源的视图并收到空指针

这是因为您无法在 Eclipse 发现中“看到”RSE 插件这一事实。至少日食表现得好像它的一部分仍然在那里,我怀疑它是。

你基本上有两种选择来解决这个问题,而且都不是很开心。

  1. 如果您的 Eclipse IDE 中没有锁定任何您无法退出的重要价值(您不应该这样做),最简单的方法是删除 eclipse 及其所有相关文件,重新安装一个干净的 eclipse ,下载 RSE,配置团队配置文件(两个会更好),不允许它从您的私人配置文件中默认 id,然后重新连接您的远程系统。

  2. 如果您真的想弄脏自己的手并通过现有的 Eclipse 安装来解决这个问题,您可以直接将代码写入RSE 注册表,仅供参考:(不是微不足道的)当您执行此操作时,您将无法在 Eclipse 中运行它. 注册表允许您获取几乎所有的配置设置、子系统和配置文件信息并对其进行操作。

如果我赶时间,我会做 1,如果你想花时间了解更多关于 RSE 并且不怕破坏它,我会做 2。

还有一件事。“理论上”有一种方法可以在 RSE 的 ISystemProfile 接口上获取和更改/重置您的私人配置文件,有两种方法可以做到这一点,但只是为了让您知道即使是我认识的最好的 eclipse 大师也不知道知道这是否可能或会起作用,但这里是信息:

isDefaultPrivate 用于查找唯一的开发人员配置文件(返回布尔值),而 setDefaultPrivate 可能允许您停用唯一的开发人员配置文件并设置另一个。

为什么我说可能,因为即使是 eclipse API 文档也用问号结束了这个语句......在这里看到

于 2013-08-24T13:24:35.577 回答
0

我发现这个

http://www.eclipse.org/forums/index.php/t/171215/

我已经发现了问题:

查看详细信息后,我发现当它尝试保存与连接相关的一些数据时,一切都出错了。

我不喜欢一致性,所以我在 Program Files 中删除了 Eclipse 文件夹。我假设 RSE 没有适当的权限在那里写,所以它只是失败了。Eclipse 文件夹现在在我的桌面上,RSE 工作得很好!

现在为什么 Eclipse 没有合适的安装程序以便它可以与我的其他程序一起使用?!凉爽的

我不知道这是否有帮助。

于 2013-08-27T22:21:09.823 回答