我正在使用一个独立的java程序,它使用javahelp系统来存储帮助文件。该程序有一堆内置的“模块”,用户可以在运行时选择这些模块来对数据进行各种分析。我添加了运行插件模块的功能,这些插件模块放在插件文件夹中,这样其他开发人员就可以创建自己的算法。
我从插件文件夹中的.class文件开始,以及javahelp .hs文件和支持文档(.xml、.html、.map等)。我能够从插件文件夹中读取.hs文件,并与主程序帮助系统合并,没有问题。
然后,我将所有的文件捆绑在一个jar中,因为这就是我们所设想的大多数开发人员分发插件的方式。.class文件仍然可以加载和运行,但是现在我不能再加载.hs文件。HelpSet类需要一个带有.hs文件位置的URL。我要告诉它查看jar文件的内部吗?任何帮助都将不胜感激。
发布于 2016-09-13 19:03:55
为了防止有人遇到同样的问题,我的问题是我用来从jar文件内部访问帮助集文件的路径名的格式。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中一样。
我的问题是,我在包名和帮助集文件名之间使用了File.separator,这会在windows中返回一个反斜杠。我还尝试了一个双反斜杠,也是这样做的。我必须使用正斜杠,否则HelpSet构造函数将无法找到该文件。
https://stackoverflow.com/questions/39450788
复制相似问题