【问题标题】:Facing issues while running remote java program through RSE plugin in Eclipse在 Eclipse 中通过 RSE 插件运行远程 java 程序时遇到问题
【发布时间】:2013-08-18 18:10:03
【问题描述】:

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

我能够使用 RSE 通过 Eclipse 连接到我的远程计算机,并且在 Remote System Explorer 透视图上的 Eclipse 上的远程 maven 项目上执行 Create Remote Project 后,我可以在 Java 透视图下看到我的项目。

现在在 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)

【问题讨论】:

  • 您是否尝试清除您的 Eclipse 元数据文件夹?您还可以禁用 RSE 插件并重复此过程(只是看看插件是否是您所看到的根本原因)
  • 我尝试删除元数据文件夹,实际上创建了一个新工作区并尝试从那里运行但没有运气。如何检查是否安装了 rse 插件并禁用 rse 插件?
  • 我在我的答案中发布了一个编辑,因为这里太长了无法评论。

标签: java eclipse remote-debugging remote-server


【解决方案1】:

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

【讨论】:

  • 嗨,马克,我在wireshark 中没有看到任何可以帮助我们解决这个问题的原因。我今天也再次尝试了所有步骤,但是这个 NullPointerException 非常痛苦。还有其他线索吗?
【解决方案2】:

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

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

这里有几个链接:

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

Temporarily disable Eclipse plugin

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

【讨论】:

  • 从 Eclipse 插件目录中手动删除 rse 插件从 Eclipse 中删除了远程系统资源管理器。而且我无法找到暂时禁用 RSE 插件的方法。
  • 试试新的 eclipse 版本并在那里重复相同的步骤怎么样?
  • 这应该可以工作..但这是一项繁重的工作..您使用的是什么版本的 Eclipse?
  • 面向 Web 开发人员的 Eclipse Java EE IDE。版本:Juno Service Release 2 Build id:20130225-0426
  • 另外,我尝试在 mac 上下载一个新的 java eclipse。它不包含 rse 插件,我需要下载 rse 插件来做远程服务器资源管理器。下载这意味着,再次陷入同样的​​问题。
【解决方案3】:

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

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

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

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

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

我怎么知道这个?

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

  2. 必须明确创建公共团队配置文件,而自动创建私有配置文件。 more on this here

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

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

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

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

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

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

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

您可以在RSE Developer Guide 中找到更多相关信息

编辑:跟进

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

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

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

    1234563重新安装一个干净的 Eclipse,下载 RSE,配置一个团队配置文件(两个会更好),不允许它从您的私人配置文件中默认 id,然后重新连接您的远程系统。
  1. 如果你真的想弄脏你的手并通过现有的 eclipse 安装来解决这个问题,你可以直接将代码写到 RSE registry 仅供参考:(不是微不足道的)你将无法运行当你这样做时,它在 Eclipse 中。注册表允许您几乎获得所有配置设置、子系统和配置文件信息并对其进行操作。

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

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

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

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

【讨论】:

  • 谢谢J-Boss。这是一个明确的信息回复,并继续尝试创建公共档案。但它仍然给我返回了一个空指针异常。还收到一个不同的空指针异常。 (问题中有新的空指针异常)我不知道我在这里做错了什么。
  • 您能否指点我更正 rse 插件,以便我在新的 eclipse kepler 上试用它,然后再次尝试上述步骤(我现在无法在任何地方找到 rse 插件?) .是不是已经过时了。
  • 我意识到我没有回答你的第二个问题,是的,RSE 有点旧,但 TM 已经扩展了很多。这是the site,您可以在其中了解更多信息。它是一个基于 RSE 的轻量级框架,但它更安全,您现在可能会喜欢它。
  • 您能通过 join.me 或 skype 为我提供远程帮助吗?我实际上无法自己弄清楚并解决这个问题,我现在非常需要解决这个问题。谢谢。
【解决方案4】:

我在

找到了这个

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

我已经发现问题了:

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

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

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

我不知道这是否有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多