0

我有一个 Rhapsody 的 java 插件,但不知何故它没有加载代码示例:

IRPApplication app = null;
public class ProjectHistory extends RPUserPlugin{
@Override
public void RhpPluginInit(final IRPApplication rpyApplication) {
app = rpyApplication;
}
}

帮助文件如下:

#REM: Definition of the plug-in
name16=Compare...
#REM: the class that implements Rhapsody's callbacks
JavaMainClass16=com.example.rhy.ProjectHistory
#REM: Class paths your application use
JavaClassPath16=./plugins/profile.jar;./plugins/GenericLib.jar;./plugins/java_lib/api.jar
#REM: Tells Rhapsody that this helper is actually a plug-in
isPlugin16=1
isVisible16=1

#REM: Definition of the pup-up menu that trigger the plugin
name17=Compare...
#REM: Tells Rhapsody that this helper actually invokes a plug-in
isPluginCommand17=1
#REM: The command is actually the plug-in name
command17=Compare...
#REM: to create a pop-up menu item on OMDs
applicableTo17=Package
isVisible17=1

但是插件甚至没有加载。日志文件中没有错误

Rhapsody 版本是 8.1.4,用于编译的 Java 版本是 1.8

4

4 回答 4

0

在 Rhapsody 安装过程中,有时 Rhapsody 无法在注册表中注册 dll。结果插件无法正确加载。要解决此问题,您需要按照以下说明手动注册 rhaposodyserver.dll:

  • 以管理员身份打开命令提示符(右键单击 cmd.exe 并选择“以管理员身份运行”)。
  • CD 到 Rhapsody 的安装目录。
  • 输入命令:regsvr32.exe rhapsodyserver.dll

您将收到一条消息,显示注册成功。在此之后您需要重新启动系统。希望这可以帮助。

参考

于 2018-01-22T07:38:46.893 回答
0

起初我会为插件启用日志记录。这可以在 rhapsody.ini 文件中完成,在 [General] 部分添加以下行:

JavaAPILogFile=c:\api_log.txt

如果需要,您可以为日志文件选择其他路径。在日志文件中,您会发现加载插件时完成的所有输出,一个好的起点是开始搜索异常或插件名称。

顺便说一句,您是否增加了上述 HEP 文件中的项目数量?

于 2017-05-24T11:17:15.997 回答
0

除了弗兰克的建议之外,我还要补充一点,您的插件(如此处所示)甚至不应该编译,因为您在类定义之前定义了“app”变量。你需要把它移到课堂上。此外,在引用包含插件的 .jar 文件时,我在 .hep 文件中使用完全限定的路径名​​会更好。最后,插件逻辑的实际执行发生在 RhpPluginInvokeItem() 方法中,因此请确保提供该方法。事实上,请确保为接口中的所有方法提供覆盖的方法。

于 2017-05-24T15:04:20.233 回答
0

一些潜在或明确的问题:

  • 截至今天,rhapsody 支持的 java 版本(rhapsody 8.2.1)是 Java 7 SDK(不支持 Java 8)
  • 如果你扩展 RhpPluginInit 那么你已经有一个方法可以覆盖:void RhpPluginInit(IRPApplication rpyApplication),所以你已经有了你的应用程序。

    • 并且正如上面评论中提到的,IRPApplication 无论如何都不应在类之外定义。
于 2017-10-25T16:18:07.100 回答