- ベストアンサー
execの使い方に関して
こんにちは。 先ほどヘルプに関しての質問をしました。 あれでヘルプファイル(.chm)を実行できたんですが‥ 作成したアプリケーションを複数人に配布しようとJAR化することを考えています。 ディレクトリ構造は以下の通りです。 main.class manifest.txt -> Manifest-Version: 1.0 Main-Class: main sub/sub.class sub/help.chm この現状で jar cvfm sample.jar manifest.txt main.class sub/*.class sub/*.chm と入力してsample.jarを実行し、chmを動作させる箇所になると ファイルsub/help.chmは開けません といったダイアログが表れ、ヘルプが開けません。 ヘルプを呼び出している関数を以下に示します。 public void HelpDisplay() { try { Runtime.getRuntime().exec("hh.exe sub/help.chm"); } catch(Exception e) { System.out.println("e:"+e); } } 原因がわかりません。どなたかご教授の程よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>先ほどヘルプに関しての質問をしました。 この質問がどこにあるかわからないので(他の掲示板?)経緯が見えませんが、おそらく、ここを勘違いされていると思われる点を挙げます。 そもそも exec("hh.exe sub/help.chm") としている時点で、これはjarのリソースファイルとは成りえません。 単純にOSコマンドを呼び出しているだけですから。 と言う事は、(mainからexecしているとして)常に jarと同じディレクトリに subディレクトリが存在しなければならない と言う事になります。 sample.jarだけ他のディレクトリにコピーしてダブルクリックしてもダメです。 外してたらごめん。
その他の回答 (1)
- UKY
- ベストアンサー率50% (604/1207)
> "hh.exe sub/help.chm" これは hh.exe というアプリケーションで sub/help.chm というファイルを開くという意味ですよね? 本当に sub/help.chm というファイル(=カレントディレクトリの中の sub というサブディレクトリの中の help.chm というファイル)はそこに存在していますか? まさか sub/help.chm と書けばJARアーカイブから勝手に sub/help.chm が展開されるなんて思っていませんよね?
補足
はい。上記の認識で間違いありません。 sub/help.chmは間違いなく存在します。 >>まさか sub/help.chm と書けばJARアーカイブから 勝手に sub/help.chm が展開されるなんて思って いませんよね? 自分の知識不足でよくわかりません。 Runtime.getRuntime().exec("hh.exe sub/help.chm") で展開(実行)?されるのではないでしょうか。 そこの所がイマイチわかりません。 教えてください。 よろしくお願いします