(57)【要約】【課題】ＪＡＲファイル内に必要なＪａｖａクラスファイルが含まれているか否かを効率的に探索することができるＪａｖａ開発支援プログラムを提供する。【解決手段】本発明に係るＪａｖａ開発支援プログラムは、必要なＪａｖａクラスファイルが第１ファイルパス内に存在する第１ＪＡＲファイル内に含まれていない場合、第２ファイルパス内に存在する第２ＪＡＲファイル内にそのＪａｖａクラスファイルが含まれているか否か検索する。【選択図】図１
2016014949.tif 000002
【特許請求の範囲】
【請求項１】
Ｊａｖａプログラムを開発することを支援する処理をコンピュータに実行させるＪａｖａ開発支援プログラムであって、前記コンピュータに、
第１ファイルパス内に存在する第１ＪＡＲファイルを参照した上でＪａｖａソースコードをコンパイルまたはコンパイル済のＪａｖａバイトコードを実行するステップ、
前記Ｊａｖａソースコードまたは前記Ｊａｖａバイトコードが参照しているＪａｖａクラスファイルが前記第１ＪＡＲファイル内に存在していない場合、第２ファイルパス内に存在する第２ＪＡＲファイル内に前記Ｊａｖａクラスファイルが含まれているか否かを検証する検証ステップ、
前記検証ステップにおける結果を示すメッセージを前記コンピュータ上において出力するステップ、
を実行させ、
前記検証ステップにおいては、前記コンピュータに、
前記第２ＪＡＲファイルを展開して前記第２ＪＡＲファイル内に含まれるファイル一覧を取得するステップ、
前記第２ＪＡＲファイルのファイル一覧内に前記Ｊａｖａクラスファイルが含まれているか否か検索するステップ、
を実行させる
ことを特徴とするＪａｖａ開発支援プログラム。
【請求項２】
前記Ｊａｖａ開発支援プログラムは、前記コンピュータに、
前記第２ＪＡＲファイル内に前記Ｊａｖａクラスファイルが含まれている場合は、前記第２ＪＡＲファイルを前記第１ファイルパスへコピーするステップを実行させる
ことを特徴とする請求項１記載のＪａｖａ開発支援プログラム。
【請求項３】
前記Ｊａｖａ開発支援プログラムは、前記コンピュータに、
前記第２ＪＡＲファイル内に前記Ｊａｖａクラスファイルが含まれている場合は、前記Ｊａｖａソースコードのコンパイルまたは前記Ｊａｖａバイトコードの実行を継続するか否かを問い合わせるメッセージを出力して応答を受け取るステップ、
前記Ｊａｖａソースコードのコンパイルまたは前記Ｊａｖａバイトコードの実行を継続する旨の前記応答を受け取った場合は、前記第１ファイルパスへコピーした前記第２ＪＡＲファイル内に含まれる前記Ｊａｖａクラスファイルを用いて、前記Ｊａｖａソースコードのコンパイルまたは前記Ｊａｖａバイトコードの実行を継続するステップ、
を実行させる
ことを特徴とする請求項２記載のＪａｖａ開発支援プログラム。
【請求項４】
前記Ｊａｖａ開発支援プログラムは、前記コンピュータに、
前記Ｊａｖａソースコードをコンパイルまたは前記Ｊａｖａバイトコードを実行する際に参照する必要がある第３ＪＡＲファイルが前記第１ファイルパス内に存在しない場合は、前記第２ファイルパス内に存在する第４ＪＡＲファイルを前記第３ＪＡＲファイルの代わりに用いることができるか否かを検証する第２検証ステップ、
前記第２検証ステップにおける結果を示すメッセージを前記コンピュータ上において出力するステップ、
を実行させ、
前記第２検証ステップにおいては、前記コンピュータに、
前記第４ＪＡＲファイルを展開して前記第４ＪＡＲファイル内に含まれるファイル一覧を取得するステップ、
前記第４ＪＡＲファイルのファイル一覧内に前記Ｊａｖａクラスファイルが含まれているか否か検索するステップ、
を実行させる
ことを特徴とする請求項１から３のいずれか１項記載のＪａｖａ開発支援プログラム。
【請求項５】
前記Ｊａｖａ開発支援プログラムは、前記コンピュータに、
前記第４ＪＡＲファイル内に前記Ｊａｖａクラスファイルが含まれている場合は、前記第４ＪＡＲファイルを前記第１ファイルパスへコピーするステップを実行させる
ことを特徴とする請求項４記載のＪａｖａ開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｊａｖａプログラムを開発することを支援する技術に関する。
【背景技術】
【０００２】
Ｊａｖａプログラムを開発する際には、開発支援ツール上でＪａｖａソースコードを記述し、さらに同ツール上でソースコードをコンパイルしまたはコンパイルによって得られたＪａｖａバイトコードを実行する。記述したＪａｖａソースコード内で別のＪａｖａクラスを参照している（そのＪａｖａクラスが備える機能を利用する）場合、コンパイル時および実行時において、参照しているＪａｖａクラスを指定する必要がある。
【０００３】
参照するＪａｖａクラスは、一般的にはコンパイル時または実行時においてｃｌａｓｓｐａｔｈパラメータにより指定する。ｃｌａｓｓｐａｔｈパラメータは、既存のＪａｖａクラスライブラリを格納しているフォルダのパス、または複数のＪａｖａクラスを単一の圧縮ファイルにまとめたアーカイブファイル（ＪＡＲファイル）そのもののファイルパスあるいはこれら双方を指定する。
【０００４】
コンパイル時または実行時において指定するｃｌａｓｓｐａｔｈによって参照したＪＡＲファイルが、参照しようとしている本来のＪａｖａクラスを含んでいない場合、コンパイル結果または実行結果は開発者が意図したものとは異なるものになってしまう。そのため開発者は、ｃｌａｓｓｐａｔｈが正しいＪＡＲファイルを指定するように留意する必要がある。
【０００５】
下記特許文献１は、複数のＪＡＲファイル間の差分を検出することにより、ＪＡＲファイルのバージョンや同一性を確認する技術について記載している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１６４１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
Ｊａｖａプログラムの開発過程においては、複数バージョンのＪＡＲファイルが混在する場合がある。そのＪＡＲファイル自体も開発中である可能性があるからである。そのため、あるＪａｖａソースコードをコンパイルしまたは実行するとき指定するｃｌａｓｓｐａｔｈ内に、正しいＪＡＲファイルが存在していない場合がある。具体的には、当該ＪＡＲファイル内に本来含まれているべきＪａｖａクラスファイルが含まれていない、といったことが生じ得る。
【０００８】
上記のようなＪａｖａクラスファイルの欠損は、Ｊａｖａソースコードをコンパイルまたは実行しようとした時点で、エラーメッセージによって初めて分かることが多い。開発者はそのエラーメッセージを確認すると、他のＪＡＲファイルをｃｌａｓｓｐａｔｈ内にコピーし直し、改めてコンパイルまたは実行を試みる、といった過程を複数のＪＡＲファイルについて繰り返すことになる。
【０００９】
全てのバージョンのＪＡＲファイルをｃｌａｓｓｐａｔｈ内に初めから配置しておけば上記のようなＪａｖａクラスの欠損は生じないようにも思われるが、Ｊａｖａアプリケーションの実装によっては、サーバ起動時にｃｌａｓｓｐａｔｈ内に配置している全てのＪＡＲファイルをいったん内部的に展開する仕組みを採用している場合があり、通常処理時よりも時間がかかって開発効率を低下させてしまう。したがって前記のＪａｖａアプリケーションの実装の仕組みを採用している場合は、開発時において開発効率を向上させるためｃｌａｓｓｐａｔｈ内には必要最小限のＪＡＲファイルのみを配置するのが通常である。
【００１０】
本発明は、上記のような課題に鑑みてなされたものであり、ＪＡＲファイル内に必要なＪａｖａクラスファイルが含まれているか否かを効率的に探索することができるＪａｖａ開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るＪａｖａ開発支援プログラムは、必要なＪａｖａクラスファイルが第１ファイルパス内に存在する第１ＪＡＲファイル内に含まれていない場合、第２ファイルパス内に存在する第２ＪＡＲファイル内にそのＪａｖａクラスファイルが含まれているか否か検索する。
【発明の効果】
【００１２】
本発明に係るＪａｖａ開発支援プログラムによれば、必要なＪａｖａクラスファイルを含んでいるＪＡＲファイルを効率的に特定することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態１に係るＪａｖａ開発支援プログラム１２０を実行するコンピュータ１００の構成図である。
【図２】実施形態２におけるコンピュータ１００の構成図である。
【発明を実施するための形態】
【００１４】
＜実施の形態１：システム構成＞
図１は、本発明の実施形態１に係るＪａｖａ開発支援プログラム１２０を実行するコンピュータ１００の構成図である。コンピュータ１００は、Ｊａｖａプログラムを開発する開発者が使用するコンピュータであり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、Ｊａｖａ開発支援プログラム１２０、記憶部１３０を備える。
【００１５】
ＣＰＵ１１０は、プログラムを実行するプロセッサである。以下では記載の便宜上、プログラムを動作主体として説明する場合があるが、実際にプログラムを実行するのはＣＰＵ１１０である。
【００１６】
Ｊａｖａ開発支援プログラム１２０は、Ｊａｖａプログラムを開発することを支援するプログラムである。開発者は、Ｊａｖａ開発支援プログラム１２０が提供するソースコードエディタ上でＪａｖａソースコードを記述し、同プログラム上でソースコードをコンパイルし、コンパイルによって得られたＪａｖａバイトコードを実行しながらデバッグを実施する。
【００１７】
記憶部１３０は、ハードディスク装置などの記憶装置である。Ｊａｖａ開発支援プログラム１２０は、記憶部１３０に格納することもできるしその他適当な記憶装置に格納することもできる。
【００１８】
開発者は、Ｊａｖａ開発支援プログラム１２０の内部パラメータとして、ｃｌａｓｓｐａｔｈをあらかじめ指定しておく。Ｊａｖａ開発支援プログラム１２０は、ＪａｖａソースコードをコンパイルしまたはＪａｖａバイトコードを実行する際に、ｃｌａｓｓｐａｔｈ内のＪａｖａクラスファイルまたはＪＡＲファイル内に含まれるＪａｖａクラスファイルを参照する。以下では記載の簡易のため、Ｊａｖａクラスファイルは全てＪＡＲファイルとしてアーカイブされているものとする。
【００１９】
Ｊａｖａ開発支援プログラム１２０は、原則として第１ファイルパス１３１をｃｌａｓｓｐａｔｈとして使用するが、第１ファイルパス１３１内に必要なＪａｖａクラスファイルが見つからない場合は、予備のｃｌａｓｓｐａｔｈとして第２ファイルパス１３２内のＪａｖａクラスファイルまたはＪＡＲファイルを検索する。開発者はこれら２つのｃｌａｓｓｐａｔｈをあらかじめＪａｖａ開発支援プログラム１２０の内部パラメータとして指定しておく。第２ファイルパス１３２内には、マスタとなる最新版の全てのＪＡＲファイルおよびクラスファイルを配置しておく。
【００２０】
以下ではＪａｖａ開発支援プログラム１２０がＪａｖａソースコードをコンパイルし、またはＪａｖａバイトコードを実行する手順について説明する。
【００２１】
（ステップ１：ＪＡＲファイル内を探索する）
Ｊａｖａ開発支援プログラム１２０は、開発者からＪａｖａソースコードをコンパイル開始またはＪａｖａバイトコードを実行開始すべき旨のコマンドを受け取る。Ｊａｖａ開発支援プログラム１２０は、あらかじめｃｌａｓｓｐａｔｈとして指定されている第１ファイルパス１３１内の第１ＪＡＲファイル１３１１が、コンパイルまたは実行するＪａｖａプログラムが参照しているＪａｖａクラスファイルを含んでいるか否か検証する。必要なＪａｖａクラスファイルを含んでいればそのままコンパイルまたは実行を続行し、含んでいなければ以下のステップに進む。
【００２２】
（ステップ２：第２ファイルパス１３２内を探索する）
Ｊａｖａ開発支援プログラム１２０は、第１ＪＡＲファイル１３１１が必要なＪａｖａクラスファイルを含んでいない場合、あらかじめ指定されている第２ファイルパス１３２内のＪＡＲファイルを探索する。ここでは第２ＪＡＲファイル１３２１が第２ファイルパス１３２内に配置されているものとする。
【００２３】
（ステップ３：第２ＪＡＲファイル１３２１内を探索する）
Ｊａｖａ開発支援プログラム１２０は、ステップ１において必要とするＪａｖａクラスファイルが第２ＪＡＲファイル１３２１内に含まれているか否か、第２ＪＡＲファイル１３２１を探索する。Ｊａｖａ開発支援プログラム１２０は、探索結果をＪａｖａ開発支援プログラム１２０が備えるメッセージコンソール上に画面出力する。
【００２４】
（ステップ３：第２ＪＡＲファイル１３２１内を探索する：補足）
本ステップにおける探索手法の１例として、以下のようなものが考えられる。Ｊａｖａ開発支援プログラム１２０は、第２ＪＡＲファイル１３２１を適当なフォルダ内に展開してファイル一覧を取得し、これをテキストファイルに書き出す。Ｊａｖａ開発支援プログラム１２０は、ステップ１において必要とするＪａｖａクラスファイル名をキーワードとしてそのテキストファイルを検索し、必要なＪａｖａクラスファイルが存在しているか否か検証する。Ｊａｖａの規約上、Ｊａｖａクラス名はこれを実装したＪａｖａソースコードファイル名およびＪａｖａクラスファイル名と一致しているので、第２ＪＡＲファイル１３２１内に含まれるファイル名はＪａｖａクラス名と同視することができる。したがって上記手法により、必要なＪａｖａクラスがＪＡＲファイル内に含まれるか否かを簡易的に探索することができる。
【００２５】
（ステップ４：続行するか否か問い合わせる）
Ｊａｖａ開発支援プログラム１２０は、ステップ３において第２ＪＡＲファイル１３２１内に必要なＪａｖａクラスファイルが見つかった場合は、第２ＪＡＲファイル１３２１を用いてコンパイルまたは実行を継続するか否かを問い合わせるメッセージを画面表示する。継続する旨の応答を開発者が入力した場合、以下のステップ５に進む。
【００２６】
（ステップ５：第２ＪＡＲファイル１３２１をコピーする）
Ｊａｖａ開発支援プログラム１２０は、第２ＪＡＲファイル１３２１を第１ファイルパス１３１内にコピーする。Ｊａｖａ開発支援プログラム１２０は、コピーした第２ＪＡＲファイル１３２１を用いて、コンパイルまたは実行を継続する。
【００２７】
（ステップ４〜ステップ５：補足）
これらステップの順序は一部を入れ替えてもよい。例えば第２ＪＡＲファイル１３２１内に必要なＪａｖａクラスファイルが見つかった時点で第２ＪＡＲファイルを第１ファイルパス１３１へコピーしておき、開発者から続行する旨の応答があればそのコピーした第２ＪＡＲファイル１３２１を用いてコンパイルまたは実行を継続する。
【００２８】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係るＪａｖａ開発支援プログラム１２０は、第１ＪＡＲファイル１３１１内に必要なＪａｖａクラスファイルが含まれていない場合は、第２ファイルパス１３２内の第２ＪＡＲファイル１３２１を探索し、その結果を出力する。予備のｃｌａｓｓｐａｔｈ、すなわちコンパイル時または実行時には使用しないがＪａｖａクラスが見つからないときのみ探索対象とする第２ファイルパス１３２をあらかじめ設けておくことにより、コンパイル作業時やデバッグ作業時において必要なＪＡＲファイルを効率的に見つけることができ、作業効率の向上に資する。
【００２９】
また本実施形態１に係るＪａｖａ開発支援プログラム１２０は、第２ＪＡＲファイル１３２１内に必要なＪａｖａクラスファイルが見つかった場合は、第２ＪＡＲファイル１３２１を第１ファイルパス１３１内にコピーする。これにより、開発者がマニュアル操作により必要なＪＡＲファイルを探索してコピーし直す手間を削減することができるので、開発作業の効率をより向上させることができる。
【００３０】
＜実施の形態２＞
実施の形態１は、ＪＡＲファイル内に必要なＪａｖａクラスファイルが含まれていない場合において第２ファイルパス１３２を探索することを説明した。同様の仕組みは、必要なＪＡＲファイルそのものが欠落している場合においても適用できると考えられる。そこで本発明の実施形態２においては、ＪＡＲファイルそのものが欠落している場合の動作例を説明する。
【００３１】
図２は、本実施形態２におけるコンピュータ１００の構成図である。本実施形態２において、Ｊａｖａ開発支援プログラム１２０はｃｌａｓｓｐａｔｈとして、第１ファイルパス１３１に代えて、第１ＪＡＲファイル１３１１のファイルパスと第３ＪＡＲファイル１３１２のファイルパスを指定しているものとする。ただし第３ＪＡＲファイル１３１２は指定したファイルパス上に存在していないため、このままコンパイルまたは実行をしようとしてもエラーになる。
【００３２】
Ｊａｖａ開発支援プログラム１２０は、ｃｌａｓｓｐａｔｈが指定する第３ＪＡＲファイル１３１２が存在しないことを検出すると、実施形態１と同様に第２ファイルパス１３２内を探索し、第３ＪＡＲファイル１３１２の代わりに用いることができるＪＡＲファイルを探す。具体的には以下のような処理を実施する。
【００３３】
Ｊａｖａ開発支援プログラム１２０は、第２ファイルパス１３２内の各ＪＡＲファイルが含んでいるＪａｖａクラスファイルの一覧をそれぞれ取得する。Ｊａｖａ開発支援プログラム１２０は、そのファイル一覧に基づき、コンパイルまたは実行するＪａｖａプログラムが参照している必要とするＪａｖａクラスファイルを含んでいるＪＡＲファイルを特定する。ここでは第４ＪＡＲファイル１３２２がこれに該当するものとする。Ｊａｖａ開発支援プログラム１２０は、併せて探索過程をメッセージ出力してもよい。ＪＡＲファイル内の探索手法は実施形態１と同様である。
【００３４】
Ｊａｖａ開発支援プログラム１２０は、第４ＪＡＲファイル１３２２を第１ファイルパス１３１内にコピーし、第３ＪＡＲファイル１３１２と同じファイル名にリネームするかまたはｃｌａｓｓｐａｔｈパラメータの第３ＪＡＲファイル１３１２を指定している部分を第４ＪＡＲファイル１３２２のファイル名に改める。これら処理の前にあらかじめ開発者に対して可否を問い合わせてもよい。さらに実施形態１と同様に、コピーした第４ＪＡＲファイル１３２２を用いてコンパイルまたは実行を継続するか否かを問い合わせてもよい。
【００３５】
＜実施の形態２：まとめ＞
以上のように、本実施形態２に係るＪａｖａ開発支援プログラム１２０は、ｃｌａｓｓｐａｔｈパラメータが指定する第３ＪＡＲファイル１３１２が存在しない場合において、第２ファイルパス１３２内の第４ＪＡＲファイル１３２２を探索し、また必要に応じて（例えば開発者からの応答に応じて）、第４ＪＡＲファイル１３２２を第１ファイルパス１３１へコピーする。これにより、必要なＪＡＲファイルそのものが欠損している場合においても、実施形態１と同様に開発作業の効率を向上させることができる。
【符号の説明】
【００３６】
１００：コンピュータ、１２０：Ｊａｖａ開発支援プログラム、１３１：第１ファイルパス、１３１１〜１３１２：第１および第３ＪＡＲファイル、１３２：第２ファイルパス、１３２１〜１３２２：第２および第４ＪＡＲファイル。
【図１】
2016014949.tif 000003
【図２】
2016014949.tif 000004