繁体   English   中英

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

[英]Facing issues while running remote java program through RSE plugin in Eclipse

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

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

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

我花了一天时间来弄清楚问题是什么。 如果有人之前遇到过这个问题,或者可以对这个问题有所了解,那么这将是非常值得注意的。

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

感谢.logadata工作空间目录中.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)

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

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

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

这里有几个链接:

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

暂时禁用Eclipse插件

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

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

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

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

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

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

我怎么知道这个?

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

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

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

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

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

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

但是,有一个关键点您的私人配置文件无法删除或无效。

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

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

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

编辑:后续行动

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

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

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

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

  2. 如果您真的想亲自动手并通过现有的eclipse安装修复此问题,您可以直接将代码写入RSE注册表 FYI :(非常简单),当您执行此操作时,您将无法在Eclipse中运行它。 注册表允许您获取几乎所有配置设置,子系统和配置文件信息并对其进行操作。

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

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

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

为什么我说可能,因为即使是eclipse API文档也会以问号结束这个语句...... 请在此处查看

我发现了这个

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

我已经发现了问题:

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

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

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

我不知道这是否有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM