お世話になっております。
javaのclassを実行する
以下の処理を行うbatファイルを作成したところ
(ディレクトリ移動→classpathの設定→javaコマンド)
cmd.exeよりこのbatファイルを実行すると
正常に動作してくれるのですが
batファイルをダブルクリックすると
javaを正常に実行しません。
errorや例外も特に発生していません。
batファイルを
cmd.exeからの実行するのと
ダブルクリックで実行するのには
何か違いがあるのでしょうか?
最終的な目的はタスクにこのbatを登録し
指定した時間に定期的に実行する事なのですが、
タスクにbatを登録して実行した場合
batをダブルクリックした時と同様の現象になり
正常に動作しませんでした。
原因をご存知の方がいらっしゃいましたら
教えて頂けないでしょうか?
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
僕も#2さまに見習って、ソースコードを書こうかと思います。
バッチプログラミングはかなり勉強したので・・ソースファイルをhoge.javaとします。作業ディレクトリをC:\Javaとします。
↓のようになります。
cd C:\java
javac hoge.java && java -cp . hoge
バッチプログラミングで「&&」は直前の処理が成功したら(この場合コンパイルエラーがなかったら)、次のコマンドを実行します。ただ、このバッチファイルの短所はjavaコマンドに引数を(String args[])を渡せないことです。。本当はできるんですが、書くと長くなるので・・
ちなみに、>「(ディレクトリ移動→classpathの設定→javaコマンド)」の順番どおりに書くと↓です。
@echo off
cd c:\java
set classpath %CLASSPATH%;.
javac hoge.java && java hoge
最後に、カレントディレクトリまでのパスにスペースがあったらパス自体をダブルクォーテーションで囲ってくださいね。例↓。
cd "C:\Program Files\java"
では、がんばってください。何かの参考になればと思って書かせていただきました。
No.2
- 回答日時:
自分の環境で同様のことをする場合、
@echo off
cd aaa\
java -cp . hoge
で、クラスファイルの実行はできます。ただし、実行が終わるとコマンドプロンプトも終了してしまうので、pauseを最後に入れると、何かのキーを入力するまでウィンドウを開いたままにできます。
例
@echo off
cd aaa\
java -cp . hoge
pause
# hogeはクラスファイルです。
No.1
- 回答日時:
batファイルをダブルクリックした場合、基本的に処理をしたら、すぐにコマンドプロンプトが閉じます。
バッチファイルは本来様々な処理をするためだけのファイルですので、いつまでもコマンドプロンプト(DOSプロンプト)を開いておく必要性はないのです。ですから、Javaのコンパイルやディレクトリ移動でbatファイルを使う場合、コマンドプロンプトを開いておいて、そこからバッチファイルのあるディレクトリ\バッチファイル名をタイプします。
そうすればお望みの処理ができるはずです。
また、バッチファイルを入れるフォルダを決めておいて、そのフォルダを環境変数PATH(Javaをインストールしたときにも設定しましたね)に設定しておけば、コマンドプロンプトからバッチファイル名だけをタイプすれば良いです。ですから、そうしたほうがJavaだけでなくCやPerlのコマンドを使う際にも便利です。
タスクにbatを登録しても同様な症状が出るのは普通です。余分なタスクは増やさないほうがいいですよ・・
では、がんばってください。
この回答への補足
ご回答ありがとうございます。
本文にも書いた通り
コマンドプロンプトからタイプして実行した場合は
javaのプロセスが正常終了し
BATファイルをダブルクリックした場合で
javaのプロセスが正常に終了しないのです。
(例外やエラーが発生せずスレッドが落ちる。)
なんとか原因が判明し、
BATファイルの文字コードが原因でした。
解りづらい質問をして申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- その他(プログラミング・Web制作) BATファイルについて 2 2023/07/20 20:18
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- その他(プログラミング・Web制作) バッチファイルでPCのモデル名を取得したい 1 2022/03/31 10:58
- その他(プログラミング・Web制作) テキストから指定行を抜き出したい 2 2022/07/13 19:35
- その他(プログラミング・Web制作) 新しいフォルダを作るbatファイルを作りたいです。 1 2022/10/15 00:41
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ShellExecuteの使い方について
-
SYSTEM関数等を用いて複数のコ...
-
ShellExecuteでDOSコマンド実行...
-
batよりjava起動
-
ACCESSでタイトルバーを非表示...
-
Java VM のヒープサイズについて
-
popen() について。
-
コマンドを実行してコマンドラ...
-
32bitアプリから64bitアプリの...
-
staticのメモリ共有について
-
VBプログラムから「管理者とし...
-
Eclipseで、プロジェクト名のと...
-
html上で、バッチやexeファイル...
-
Eclipseのアンインストールの仕方
-
split関数で区切り文字がない場合
-
Eclipse(JAVA)のデバッグで他...
-
Eclipse・プロジェクトで、フォ...
-
Eclipse「リフレッシュ」と「ク...
-
「ワークスペースをビルド中」...
-
Javascriptの値をJava(JSP)へ渡...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでタイトルバーを非表示...
-
VBプログラムから「管理者とし...
-
ShellExecuteの使い方について
-
CloudSticky.jarが起動しない。
-
windowsのタスクスケジューラを...
-
ブレークポイントを設置してな...
-
32bitアプリから64bitアプリの...
-
staticのメモリ共有について
-
実行したらがメモ帳出て来てしまう
-
ShellExecuteでDOSコマンド実行...
-
batよりjava起動
-
C# コマンドプロンプト画面で表...
-
jarファイルをバッチで実行させ...
-
コマンドを実行してコマンドラ...
-
Tomcatのメモリー使用量が知りたい
-
windows power shell icacl
-
SYSTEM関数等を用いて複数のコ...
-
コンパイルできるのに実行できない
-
C#からバッチファイルを起動で
-
「SimpleEntry を型に解決でき...
おすすめ情報