0

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

javahelp .hs ファイルとサポート ドキュメント (.xml、.html、.map など) とともに、plugins フォルダー内の .class ファイルだけから始めました。plugins フォルダーから .hs ファイルを読み取り、メイン プログラムのヘルプ システムとマージすることができました。問題ありません。

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

4

1 に答える 1

0

誰かが同じ問題を抱えている場合に備えて、私の問題は、jar ファイル内から helpset ファイルにアクセスするために使用していたパス名の形式でした。形式 (ここにある 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 に答える