getTeamRepository() 在 Rhapsody 中作为 Java 插件运行时抛出异常,但从 eclipse 运行时运行良好

问题描述 投票:0回答:1

我正在开发一个 Rhapsody Java 插件,它与 RTC 连接以获取一些数据。当我将代码作为 Java 应用程序运行时,该代码在 Eclipse 中运行良好。但是当我在 Rhapsody 中加载与插件相同的代码时, getTeamRepository(repoURI) 会抛出异常。

m_monitor = (IProgressMonitor) new NullProgressMonitor();

TeamPlatform.startup();

if(TeamPlatform.isStarted())
{
    try
    {
        m_iTeamRepository =  TeamPlatform.getTeamRepositoryService().getTeamRepository(repoUri);
        m_iTeamRepository.registerLoginHandler(new DefaultLoginHandler(l_userTID, l_userPassword));

        m_iTeamRepository.login(m_monitor);

    }
    catch(Exception e)
    {
        m_rhapsodyActiveApplication.writeToOutputWindow("Log", "\nException occurred while logging in User:"+l_userTID+"!");
        e.printStackTrace();
    }
}

异常日志:

[2024-09-13 02:24:51 Proc=28524 Thr=15928 App=0xf8dde68] 插件 消息:调用插件方法时出现异常:
插件:exportFeatureLineUp.ExportFeatureLineUpPlugin 方法:RhpPluginInvokeItem Sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处的 java.lang.reflect.InitationTargetException sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) 在 java.lang.reflect.Method.invoke(Method.java:508) 处 com.telelogic.rhapsody.core.JavaPluginsManager.callPluginMethod(未知 来源)

由: java.lang.ExceptionInInitializerError 引起,位于 java.lang.J9VMInternals.ensureError(J9VMInternals.java:148) 处 java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:137) 在 com.ibm.team.repository.client.internal.TeamRepository。(TeamRepository.java:446) 在 com.ibm.team.repository.client.internal.TeamRepositoryService.createSharedTeamRepository(TeamRepositoryService.java:526) 在 com.ibm.team.repository.client.internal.TeamRepositoryService.getTeamRepository(TeamRepositoryService.java:113) 在 com.ibm.team.repository.client.internal.TeamRepositoryService.getTeamRepository(TeamRepositoryService.java:132) 在exportFeatureLineUp.ExportFeatureLineUp.loginToRTC(XYZ.java:942) 在exportFeatureLineUp.ExportFeatureLineUp.runPlugin(XYZ.java:1031) 在 exportFeatureLineUp.ExportFeatureLineUpPlugin.RhpPluginInvokeItem(ExportFeatureLineUpPlugin.java:25)

原因:java.lang.IllegalArgumentException:类型名称 Contributor 和命名空间 URI com.ibm.team.repository 不匹配 解析为 IItemType。

在 com.ibm.team.repository.common.internal.querypath.AbstractQueryPathModel$Implementation.getItemType(AbstractQueryPathModel.java:197) 在 com.ibm.team.repository.common.query.IQuery$Factory.newInstance(IQuery.java:129) 在 com.ibm.team.repository.client.internal.ContributorManager.createAllContributorsQuery(ContributorManager.java:72) 在 com.ibm.team.repository.client.internal.ContributorManager。(ContributorManager.java:60)

java eclipse eclipse-plugin rhapsody
1个回答
0
投票

发生此错误是因为在 Rhapsody 安装中的现有插件中,没有人使用此值进行标识:

  • 贡献者(IItemType 类型)
  • 命名空间 URI com.ibm.team.repository

想象一下 Spring 无法解析带有类型、名称和“命名空间”的 bean(这是 Eclipse 和 Rhapsody 行话中“扩展点”的奇特名称)。

我没有找到很多关于“如何通过代码显示现有 IItemTypes”的链接,只是这个链接包含有关如何直观地创建它们的视频,也许它可以指导您做什么。

https://www.ibm.com/support/pages/how-can-i-add-custom-type-list-predefined-types-built-rhapsody

如果我是你,我会在 IDE 中搜索如何获取所有现有类型,并将 URI 作为参数或类型 (IItemType) 传递。

抱歉,我无法提供更多帮助,如果您当前没有参与付费客户的项目,IBM 不会轻易提供此软件:(。

© www.soinside.com 2019 - 2024. All rights reserved.