0

我正在使用一个独立的 java 程序,它使用 javahelp 系统来获取帮助文件。该程序有一堆内置的“模块”,用户可以在运行时选择这些模块来对数据进行各种分析。我正在添加运行放置在插件文件夹中的插件模块的功能,以便其他开发人员可以创建自己的算法。

我从 plugins 文件夹中的 .class 文件开始,以及 javahelp .hs 文件和支持文档(.xml、.html、.map 等)。我能够从插件文件夹中读取 .hs 文件并与主程序帮助系统合并,没问题。

然后我将所有文件捆绑在一个 jar 中,因为这是我们设想大多数开发人员分发他们的插件的方式。.class 文件仍然加载并运行,但现在我无法再加载 .hs 文件了。HelpSet 类需要一个带有 .hs 文件位置的 URL。我是否告诉它查看 jar 文件?任何帮助,将不胜感激。

4

1 回答 1

0

以防万一有人遇到同样的问题,我的问题是我用来从 jar 文件内部访问帮助集文件的路径名的格式。格式(来自此处找到的 JavaHelp 用户指南的第 4.6.7 节)将 URL 形成为:

URL helpSetLoc = new URL("jar:file:" + File.separator + pluginList.get(i).getJarFile()+"!/"+pluginList.get(i).getHelpSetName());

我的getJarFile()方法返回了 jar 文件的名称(包括绝对路径)。我的getHelpSetName方法返回包名称和帮助集名称,由正斜杠分隔,如myPlugin/pluginHelp.hs.

我的问题是我在包名和帮助集文件名之间使用了 File.separator,它在 Windows 中返回了一个反斜杠。我还尝试了一个双反斜杠,它也做了同样的事情。我必须使用正斜杠,否则 HelpSet 构造函数无法找到该文件。

于 2016-09-13T11:03:55.320 回答