故障排除
如果组件出现问题,请对照以下清单,检查组件的配置是否正确。
检查注册表关键字
要检查注册表数据库的设置是否正确,请运行 regview 对组成注册表数据库 /UCR、/SERVICES 和 /IMPLEMENTATIONS 分支注册的三个关键字。以下示例显示了如何读取相应的关键字,以及正确的配置是什么样的。在我们的示例中,服务 ImageShrink
和关键字 /UCR/org/openoffice/test/XimageShrink 包含在 UNOIDL 中指定的类型信息(regview 的准确输出可能因 OpenOffice.org 版本不同而异):
# dump XImageShrink type information $ regview thumbs.rdb /UCR/org/openoffice/test/XImageShrink Registry "file:///X:/office60eng/program/thumbs.rdb": /UCR/org/openoffice/test/XImageShrink Value: Type = RG_VALUETYPE_BINARY Size = 364 Data = minor version: 0 major version: 1 type: 'interface' uik: { 0x00000000-0x0000-0x0000-0x00000000-0x00000000 } name: 'org/openoffice/test/XImageShrink' super name: 'com/sun/star/uno/XInterface' Doku: "" IDL source file: "X:\SO\sdk\examples\java\Thumbs\org\openoffice\test\XImageShrink.idl" number of fields: 3 field #0: name='SourceDirectory' type='string' access=READWRITE Doku: "" IDL source file: "" field #1: name='DestinationDirectory' type='string' access=READWRITE Doku: "" IDL source file: "" field #2: name='Dimension' type='com/sun/star/awt/Size' access=READWRITE Doku: "" IDL source file: "" number of methods: 0 number of references: 0
/SERVICES/org.openoffice.test.ImageShrink 关键字必须指向为此服务选择的实现名称 org.openoffice.comp.test.ImageShrink
:
# dump service name registration $ regview thumbs.rdb /SERVICES/org.openoffice.test.ImageShrink Registry "file:///X:/office60eng/program/thumbs.rdb": /SERVICES/org.openoffice.test.ImageShrink Value: Type = RG_VALUETYPE_STRINGLIST Size = 45 Len = 1 Data = 0 = "org.openoffice.comp.test.ImageShrink"
最后,/IMPLEMENTATIONS/org.openoffice.comp.test.ImageShrink 关键字必须包含加载程序和组件 JAR 的位置:
# dump implementation name registration $ regview thumbs.rdb /IMPLEMENTATIONS/org.openoffice.comp.test.ImageShrink Registry "file:///X:/office60eng/program/thumbs.rdb": /IMPLEMENTATIONS/org.openoffice.comp.test.ImageShrink / UNO / ACTIVATOR Value: Type = RG_VALUETYPE_STRING Size = 26 Data = "com.sun.star.loader.Java2" / SERVICES / org.openoffice.test.ImageShrink / LOCATION Value: Type = RG_VALUETYPE_STRING Size = 50 Data = "file:///X:/office60eng/program/classes/thumbs.jar"
如果缺少 UCR 关键字,则是 regmerge 问题。最可能的原因是缺少 .urd 文件。编写 makefile 文件时请小心处理。如果在 makefile 文件启动 regmerge 时缺少 .urd 文件,regmerge 将继续运行并创建基本的 .rdb 文件,有时没有任何类型信息。
如果 regview 无法找到 /SERVICES 和 /IMPLEMENTATIONS 关键字或者它们包含错误的内容,regcomp 在运行时将会出错。这可能是由 regcomp 参数中的错误路径名引起的。
此外,java(.ini|rc) 中的 SystemClasspath
设置错误(OpenOffice.org 2.0 之前的版本)可能导致 regcomp 显示缺少类的错误消息。请检查为 Java UNO 运行时 JAR 指定的 java(.ini|rc) 中的 SystemClasspath
条目。
确保注册 Java 组件时 regcomp 是从当前目录运行的。此外,确保 regcomp 运行时, <OfficePath>/program 是当前文件夹,并验证 regcomp 是否位于当前文件夹中。
检查 Java VM 设置
只要 VM 服务由 OpenOffice.org 实例化,它都使用 OpenOffice.org 中的 Java 配置设置。这发生在 Java 组件注册期间,因此,请确保 Java 已启用。选择 OpenOffice.org 中的工具 - 选项,以显示对话框。展开 OpenOffice.org 节点并选择安全。选中 Java 区域中的启用复选框,并单击确定。
检查 Manifest
确保 Manifest 文件包含注册类名称的正确条目。该文件必须包含以下行:
RegistrationClassName: <full name of package and class>
确保 Manifest 文件以新行结束。注册类名称必须是实现 __writeRegistryServiceInfo()
和 __getServiceFactory()
方法的类的名称。在我们的示例中,要在 Manifest 条目中输入的 RegistrationClassName
是 org.openoffice.comp.test.ImageShrink
。
调整附加类的 CLASSPATH
OpenOffice.org 启动用于 Java 组件的 Java VM 时会保留自身的系统类路径和用户类路径。系统或用户类路径中不需要包含服务实现的 JAR 文件。如果组件要用到的 JAR 文件或类文件不是 Java UNO 运行时的组成部分,则它们必须位于类路径中。通过编缉选项对话框中的类路径可以 完成此操作(工具 – 选项 – OpenOffice.org – 安全)。
禁用调试选项
如果 java(.ini|rc) 文件中存在调试选项(-Xdebug、-Xrunjdwp)(OpenOffice.org 2.0 之前的版本),则可以分别在这两行的行首放置分号来禁用它们。对于 OpenOffice.org 2.0 及其以后版本,确保在“参数”对话框中删除调试选项。此对话框可以在选项对话框中可找到(工具 – 选项 – OpenOffice.org– Java)。regcomp 或 pkgchk 工具可能会挂起,因为 JVM 会等待附加调试器。
Content on this page is licensed under the Public Documentation License (PDL). |