2016-09-12 9 views
0

私は、ヘルプファイル用にjavahelpシステムを使用するスタンドアロンのJavaプログラムを使用しています。このプログラムには、ユーザーが実行時に選択してデータのさまざまな分析を実行できる、多数のビルトインの「モジュール」があります。私は、他の開発者が独自のアルゴリズムを作成できるように、プラグインフォルダに配置されたプラグインモジュールを実行する機能を追加しています。JavaHelp:外部jarファイルからヘルプセットをロード

私は、javahelp .hsファイルとサポートされているドキュメント(.xml、.html、.mapなど)と共に、pluginsフォルダの.classファイルから始めました。私はプラグインフォルダから.hsファイルを読み込み、メインプログラムのヘルプシステムとマージできました。問題はありません。

次に、すべてのファイルをjarファイルにまとめました。これは、ほとんどの開発者がプラグインを配布する方法を想定しているからです。 .classファイルはすべてロードされて実行されますが、今は.hsファイルを読み込めません。 HelpSetクラスには、.hsファイルの場所を含むURLが必要です。 jarファイルを調べるように指示しますか?どんな助けもありがとう。

答えて

0

誰かが同じ問題を抱えている場合、私の問題は、jarファイル内からヘルプセットファイルにアクセスするために使用していたパス名の形式になりました。

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

マイgetJarFile()方法は、(絶対パスを含む)のjarファイルの名前が返さ:フォーマットは、(JavaHelpのユーザーガイドのセクション4.6.7からhereを発見)としてURLを形成することです。私のgetHelpSetNameメソッドは、パッケージ名とヘルプセット名をスラッシュで区切って、myPlugin/pluginHelp.hsのように返しました。

私の問題は、パッケージ名とヘルプファイル名の間にFile.separatorを使用していたことです。これはウィンドウにバックスラッシュを返します。私は同じことをした二重バックスラッシュも試みました。スラッシュを使用する必要がありました。そうしないと、HelpSetコンストラクターがファイルを見つけることができませんでした。

関連する問題