You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rhapsody Java插件调用getTeamRepository抛异常,Eclipse运行正常求助

问题:Rhapsody Java插件对接RTC时调用getTeamRepository抛出异常

我正在开发一款对接RTC以获取数据的Rhapsody Java插件,该代码在Eclipse中以Java应用程序运行时功能正常,但将其作为插件加载到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] PLUGIN
MESSAGE: 调用插件方法时出现异常:

Plugin:exportFeatureLineUp.ExportFeatureLineUpPlugin
Method:RhpPluginInvokeItem
java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508) at
com.telelogic.rhapsody.core.JavaPluginsManager.callPluginMethod(Unknown
Source)

Caused by: java.lang.ExceptionInInitializerError at java.lang.J9VMInternals.ensureError(J9VMInternals.java:148) at
java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:137)
at
com.ibm.team.repository.client.internal.TeamRepository.(TeamRepository.java:446)
at
com.ibm.team.repository.client.internal.TeamRepositoryService.createSharedTeamRepository(TeamRepositoryService.java:526)
at
com.ibm.team.repository.client.internal.TeamRepositoryService.getTeamRepository(TeamRepositoryService.java:113)
at
com.ibm.team.repository.client.internal.TeamRepositoryService.getTeamRepository(TeamRepositoryService.java:132)
at exportFeatureLineUp.ExportFeatureLineUp.loginToRTC(XYZ.java:942)
at exportFeatureLineUp.ExportFeatureLineUp.runPlugin(XYZ.java:1031)
at
exportFeatureLineUp.ExportFeatureLineUpPlugin.RhpPluginInvokeItem(ExportFeatureLineUpPlugin.java:25)

Caused by: java.lang.IllegalArgumentException: 类型名称Contributor和命名空间URI com.ibm.team.repository无法解析为IItemType。

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

解决方案

这个问题核心是Rhapsody的类加载器无法定位RTC相关的模型定义文件,导致无法解析Contributor这类IItemType,可从以下几个方向解决:

  • 补全RTC依赖包并配置类路径
    检查插件打包时是否包含所有RTC客户端必需的JAR包,比如com.ibm.team.repository.common.jar、com.ibm.team.repository.client.jar、com.ibm.team.repository.common.model.jar等。同时在Rhapsody插件配置中确保这些包被添加到类路径,让Rhapsody的类加载器能访问到。

  • 手动初始化RTC模型注册表
    在调用TeamPlatform.startup()之后,手动触发RTC模型初始化,代码示例:

    com.ibm.team.repository.common.internal.model.ModelRegistry.INSTANCE.initialize();
    

    也可以提前通过TeamPlatform.getTeamRepositoryService().getItemTypeManager()加载所需的ItemType,避免初始化阶段找不到定义。

  • 调整类加载策略
    Rhapsody与Eclipse的类加载机制不同,可尝试把RTC的JAR包放到Rhapsody的plugins目录下,或者配置插件的classpath属性,让RTC相关类被优先加载。

  • 检查版本兼容性
    确认使用的RTC客户端版本与Rhapsody运行的Java版本兼容,部分旧版RTC在J9虚拟机(Rhapsody常用)下可能存在类加载问题,可尝试升级到兼容的RTC版本。

内容的提问来源于stack exchange,提问作者Rahul Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:07:33