
シェルから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-アプリ」...
-
nddコマンドを対話式で使用した...
-
VBAでDOSコマンドを実行する に...
-
メールが読めない
-
タスクスケジュールについて
-
PowerShellのスクリプト実行に...
-
やりたいことが複数ある場合、...
-
システム終了時にバッチファイ...
-
DiskDefragmenterサービスについて
-
Linuxでテキストに書いた設定を...
-
英語版での表示
-
バッチファイル内の各コマンド...
-
「ファイル名を指定して実行」...
-
◆CentOS nohupコマンドが実行で...
-
taskkill をバッチ処理できない。
-
何秒後に実行する
-
YAHOOのトップページを開くと・...
-
LAN上のサーバから他のサー...
-
Ubuntu NTP 今すぐ更新
-
やっぱ駄目だわ!さっきソープ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
pingは正常なのにtracerouteで...
-
エクセルの表にヘンな枠が・・・
-
Linux のシェルスクリプトの強...
-
バッチファイル内の各コマンド...
-
Openイベントを開始させないで...
-
SPI非言語の問題 解説お願いします
-
windows10のごみ箱をrd /s /q C...
-
LD_LIBRARY_PATHって?
-
linuxサーバーのキャッシュをク...
-
シャットダウンバッチがうまく...
-
最初の一度しか実行されないロ...
-
python IDLEで訂正、削除のやり...
-
ROBOCOPY cmdで正常に処理され...
-
taskkill をバッチ処理できない。
-
sudoで実行したコマンドの実行...
-
エクセルからアクセスのプロシ...
-
サーバでログオフするとアプリ...
-
コマンドプロンプト「システム...
-
shutdownコマンド実行の残り時...
おすすめ情報