java - 当我使用 Java API 从插件打印时,IBM Rhapsody 日志为空

标签 java plugins rhapsody

我尝试制作我的第一个 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 的完整路径。

最后我有两个问题:

  1. 为什么 Rhapsody 的“日志”选项卡中没有打印消息?

  2. 如果我修改消息,我必须重新加载帮助程序才能看到更改?如果是,我该如何正确执行?

谢谢, 丹尼尔

最佳答案

丹尼尔, 不要仅仅因为 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”。

  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/

相关文章:

java - 为 https 运行 Tomcat7

java - 使用Java访问网络中的文件

grails - Grails积极维护和运行的付款插件

plugins - Jenkins Gradle 插件 - 将参数作为 -P 而不是 -D 传递

java - 狂想曲 java api

c++ - 在 IBM Rhapsody 中查找事件类销毁何时完成

java - 如何操作位图中的像素?

java - android 只振动 15 秒

javascript - 无法自定义交互式 JavaScript 内容

java - 如何为 Rhapsody 表生成自定义选择器?