我尝试制作我的第一个 Rhapsody 插件,到目前为止,我设法使该插件出现在“工具”选项卡下。
到目前为止,我在我的项目中编写了此内容,但“日志”选项卡保持不变
@Override
public void RhpPluginInit(IRPApplication rpyApplication) {
IRPApplication rpy = RhapsodyAppServer.getActiveRhapsodyApplication();
rpy.writeToOutputWindow("Log", "test\n");
}
我的 .hep 文件如下所示
MyPluginProfile.hep:
[Helpers]
numberOfElements=2
name1=MyPlugin
JavaMainClass1=Pack.MyPlugin
JavaClassPath1=D:\Work\eclipseWS\rhapsodyIntegr
isPlugin1=1
isVisible1=1
DLLServerCompatible1=1
name2=Invoke MySimplePlugin
isPluginCommand2=1
command2=MyPlugin
applicableTo2=ObjectModelDiagram
isVisible2=1
applicableToProfile1=SimplePluginProfile
DLLServerCompatible2=1
我将其导入到 Rhapsody 中,从"file">“项目属性”>“属性”选项卡> 选择“按“助手”筛选的 View ”> 助手文件。我在那里给出了 MyPluginProfile.hep 的完整路径。
最后我有两个问题:
为什么 Rhapsody 的“日志”选项卡中没有打印消息?
如果我修改消息,我必须重新加载帮助程序才能看到更改?如果是,我该如何正确执行?
谢谢, 丹尼尔
最佳答案
丹尼尔, 不要仅仅因为 Rhapsody GUI 中的“工具”菜单下有一个条目就认为您的插件工作正常。如果 Rhapsody 加载插件时出现任何问题,工具菜单中的条目仍会显示,但您的插件仍然可能被破坏。排除故障的最佳方法是更新您的 Rhapsody.ini 文件并添加一个条目来告诉 Rhapsody 调试您的插件 Activity 。在 [常规] 部分中,输入以下内容:
[一般] JavaAPILogFile=c:\temp\rhap814.log
然后,重新启动 Rhapsody 并重新加载模型。 (顺便说一句,我假设您有一个相应的 .sbs 文件,其名称与您的 .hep 文件的名称匹配,并且您已将该 .sbs 配置文件“添加到模型”。)然后查看该日志文件以查看问题可能是什么。通常这是一个类路径错误。有两种方法可以指定插件 .class 文件的位置:目录或 jar 文件。您的 hep 文件未在 JavaClasspath1 属性中指定 .jar 文件,因此我假设它是前者。如果您创建了 .jar 文件,则需要将其附加到 JavaClasspath1 属性值。
重要提示:一旦您的插件正常工作,请删除(或者更好的是通过在前面添加分号“;”来注释)Rhapsody.ini 中的 JavaAPILogFile 条目。否则,您将看到插件性能下降约 10 倍。另外,检查第二个帮助程序中的“applicableToProfile1”条目。末尾可能应该有一个“2”而不是“1”。
- 是的,遗憾的是,每次更改插件代码时,都需要重新启动 Rhapsody。
为了进行更精确的调试,请将此条目添加到 rhapsody.ini 文件的 [JVM] 部分:
使用 Eclipse 进行调试:
[JVM]
Options=ClassPath,LibPath,MaxHeap,MaxStack,EclipseDebug
EclipseDebug=agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y
或者用于 JDB 调试:
Options=ClassPath,LibPath,MaxHeap,MaxStack,JDBDebug
JDBDebug=-agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=y
关于java - 当我使用 Java API 从插件打印时,IBM Rhapsody 日志为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476211/