シェルからJavaを起動したい
上記ですけど、Linuxで毎回「java パッケージ名.クラス名」を打つのは面倒なので、
シェルスクリプトのファイルを作って、それを実行するだけで起動できるようにしようと思っています。
が、クラスが見つからないってエラーが出て実行できませんでした。
(「java パッケージ名.クラス名」を実行しているディレクトリにシェルを作ってます)
恐らく環境変数などの設定がシェルの中にいるのではないかと思いますが、
シェルスクリプトとかLinuxの環境には疎い為、どういった記述が必要なのか解りません。
どなたか例を提示して頂けないでしょうか?
ちなみに、一般的なJavaの環境変数や、
プロジェクト特有・jarファイル等の環境変数は設定済みです。
それから、シェルは以下のように記述してます。
#!/bin/sh
java パッケージ名.クラス名
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
状況が明確でないので可能性の一つというだけで役に立たないかもしれないが、
そのシェルスクリプトが存在しているディレクトリをカレントディレクトリにして、
java パッケージ名.クラス名
をコマンドラインで直接打てば動作しており、
また、そのカレントディレクトリでスクリプトを実行した場合にも実行できるが、
他のディレクトリからスクリプトを実行した場合にはクラスが見つからないというエラーになるという状況なら、
クラスパスにそのJavaクラスファイル(のトップ階層)へのパスを追加するか、
スクリプト内でカレントディレクトリを変更するかする必要がある。
例えばディレクトリ構成が、
/a/b/c/シェルスクリプトファイル
/a/b/c/パッケージ名/クラス名.class
になっていて、/a/b/cをカレントディレクトリにして、
java パッケージ名.クラス名
で直接実行したり、シェルスクリプトを起動した場合は実行できて、
他のディレクトリをカレントディレクトリにして実行権限をつけたシェルスクリプトを
/a/b/c/シェルスクリプト
や
/a/b/c を検索パスに追加しているならシェルスクリプト名だけ
で実行しようとした時にクラスが見つからない場合は、
#!/bin/sh
java -cp /a/b/c パッケージ名.クラス名
のように/a/b/cをクラスパスに指定する。
他にもクラスパスを設定しているならそれも込みでクラスパスを設定する。
スクリプトが置かれているディレクトリがスクリプト実行時のカレントディレクトリに勝手になるわけではない。
もしくは、Javaプログラムの実行中のカレントディレクトリが、
スクリプトが置かれているディレクトリであることを前提にプログラムが作られていたりするのなら(そうでない場合でもいいが)、
javaコマンドを実行する前にカレントディレクトリを変更するようにスクリプトを書く。
回答ありがとうございます。
また、こちらの少ない情報から、
色々なパターンでの提示も助かりました。
>もしくは、Javaプログラムの実行中のカレントディレクトリが、
>スクリプトが置かれているディレクトリであることを前提にプログラムが作られていたりするのなら(そうでない場合でもいいが)、
>javaコマンドを実行する前にカレントディレクトリを変更するようにスクリプトを書く。
上記のパターンで動きました!
スクリプトを置いてるディレクトリで動くようにしてるんだから、
スクリプトの内容もjavaコマンドだけでいいって勘違いしてました。
アホでした。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
- その他(プログラミング・Web制作) ログインシェル時のSHELL環境変数 1 2022/06/08 19:21
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
- UNIX・Linux Linuxのシェル関数を作成して要件を満たす方法 1 2022/11/19 20:33
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- その他(プログラミング・Web制作) シェルのSTEP数について教えてください。シェルスクリプトの先頭に、#!/bin/shとか書きますよ 3 2023/06/08 19:02
- Visual Basic(VBA) M365環境での動作エラー、及び対応相談 1 2023/01/27 04:18
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
コマンドプロンプト Windows
-
LD_LIBRARY_PATHって?
-
IF文でコンピュータ名による条...
-
vbsが実行できません。 OSは、c...
-
SPI非言語の問題 解説お願いします
-
pingは正常なのにtracerouteで...
-
linux でバッチファイを作成し...
-
Openイベントを開始させないで...
-
linuxサーバーのキャッシュをク...
-
Lubuntuの.shについて実行ファ...
-
shutdownコマンド実行の残り時...
-
死にたいと考えてしまうことっ...
-
デフラグの目安
-
バッチファイル内の各コマンド...
-
DVD の中身を開けません
-
複数のバッチを同時並行で起動...
-
CRONTAB設定で2日間隔記述方法...
-
taskkill をバッチ処理できない。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
ファイルサイズが小さくなりま...
-
windows10のごみ箱をrd /s /q C...
-
LD_LIBRARY_PATHって?
-
バッチファイル内の各コマンド...
-
linuxサーバーのキャッシュをク...
-
最初の一度しか実行されないロ...
-
Linux のシェルスクリプトの強...
-
エクセルからアクセスのプロシ...
-
python IDLEで訂正、削除のやり...
-
SPI非言語の問題 解説お願いします
-
shutdownコマンド実行の残り時...
-
ROBOCOPY cmdで正常に処理され...
-
taskkill をバッチ処理できない。
-
Openイベントを開始させないで...
-
ACCESSレポートをPDFに出力したい
-
sudoで実行したコマンドの実行...
-
信頼済みサイト登録をbatファイ...
おすすめ情報