我正在使用一个独立的java程序,该程序将javahelp系统用于帮助文件。该计划有一堆内置的模块'用户可以在运行时选择对数据执行各种分析。我添加了运行插入到插件文件夹中的插件模块的功能,以便其他开发人员可以创建自己的算法。
我开始使用plugins文件夹中的.class文件,以及javahelp .hs文件和支持文档(.xml,.html,.map等)。我能够从插件文件夹中读取.hs文件并与主程序帮助系统合并,没问题。
然后我将所有文件捆绑在一个jar中,因为这是我们如何设想大多数开发人员分发他们的插件。 .class文件仍然加载并运行,但现在我无法再加载.hs文件了。 HelpSet类需要一个带有.hs文件位置的URL。我是否要告诉它查看jar文件?任何帮助将不胜感激。
答案 0 :(得分:0)
万一有人遇到同样的问题,我的问题是我用来从jar文件中访问helpset文件的路径名的格式。格式(来自找到here的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
中所示。
我的问题是我在软件包名称和helpset文件名之间使用了File.separator,它在Windows中返回了一个反斜杠。我也尝试了一个双反斜杠,它做了同样的事情。我不得不使用正斜杠,否则HelpSet构造函数无法找到该文件。