故障排除
如果组件出现问题,请对照以下清单,检查组件的配置是否正确。
检查注册表关键字
要检查注册表数据库的设置是否正确,请运行 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). |