在Eclipse中通过RSE插件运行远程java程序时遇到问题

时间:2013-08-18 18:10:03

标签: java eclipse remote-debugging remote-server

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

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

现在在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 个答案:

答案 0 :(得分:0)

我会启动Wireshark来检查线路上究竟是什么。事实上,你在暴风雪中失明。使用Wireshark,你可能仍然处于暴风雪中,但至少你不会失明。

答案 1 :(得分:0)

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

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

以下是几个链接:

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

Temporarily disable Eclipse plugin

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

答案 2 :(得分:0)

您在此处提供的信息有些不完整,但考虑到您尝试解决问题的步骤,我将做出一些假设:

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

  2. 根据最佳做法,您选择使用的插件直接实现了RSE子系统,而没有实现自己的服务层。

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

  4. 注意:我不能确切地说出你做了什么,它可能是很多东西,但最终的结果是你将一个易失性资源附加到你的私有配置文件,并且该资源变得不可用。

    我怎么知道这个?

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

    2. 必须显式创建公共团队配置文件,同时自动创建私人配置文件。 more on this here

    3. UIPlugin组件是一个远离工作线程的调用,RSE UI插件到RSE Baseystem到RSE Base API服务层将使这个堆栈跟踪签名。

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

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

      个人资料可以是有效的或无效的。 Remote System Explorer显示来自所有活动配置文件的所有连接,并且在连接中允许从任何活动配置文件引用过滤器池。

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

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

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

      您可以在RSE Developer Guide

      中找到有关此内容的更多信息

      编辑:后续行动

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

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

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

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

      2. 如果您真的想亲自动手并通过现有的eclipse安装修复此问题,您可以直接将代码写入RSE registry仅供参考:(不是无关紧要),您将无法使用在你做的时候在Eclipse中运行它。注册表允许您几乎所有配置设置,子系统和配置文件信息并进行操作。

      3. 如果我赶时间,我只会做1,如果你想花时间学习更多有关RSE的信息并且不怕打破它,我会做2。

        还有一件事。理论上有一种方法可以在RSE的ISystemProfile接口上获取和重置/重置你的私有配置文件有两种方法,可以做到这一点,但只是让你知道即使是我认识的最好的日食专家也没有知道这是否可能或是否有效,这里的信息就是:

        isDefaultPrivate用于查找唯一的开发人员配置文件(返回boolean),setDefaultPrivate可能允许您取消激活唯一的开发人员配置文件并设置另一个。

        为什么我可以这样说,因为即使是eclipse API文档也会以问号结束此语句... see it here

答案 3 :(得分:0)

我在

找到了这个

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

我已经找到了问题所在:

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

为了保持一致性,我是一个傻瓜,所以我在Program Files中删除了Eclipse文件夹。我假设RSE没有适当的权限写在那里,所以它只是失败了。 Eclipse文件夹现在在我的桌面上,RSE效果很好!

现在为什么Eclipse没有正确的安装程序,所以它可以和我的其他程序一起使用?!凉爽

我不知道这是否有帮助。