2009-05-01 16 views
1

コマンドを実行するためにbatファイルを使用するJavaクラスがあります。しかし私はEclipse IDEでそれを開発しました。それはそこでうまく動作します。jarファイルの中にbatファイルを置く

Project1 
---->src 
------>com.myproj 
-------->BatFileRead.java 
----md.bat 
----ul.bat 

MDを:。 は次のようにしかし、私はjarファイルにそれをエクスポートして、それが含まれていたbatファイルを見つけることができない(私はIOExceptionを与える)

ファイル構造日食です。 batとul.batはsrcディレクトリと同じレベルです。震えた後、srcフォルダが消えます。

誰かが私に助けてくれますか? ありがとう

答えて

5

コマンドを実行するには、その後にbatファイルを抽出する必要があります。 jarファイルの中にある実行ファイルは実行できません。基本的には、jarファイルのバッチファイルエントリを入力ストリームとして開き、データをディスク上のFileOutputStreamにコピーする必要があります。ファイルシステム上の適切なスタンドアロンファイルになるまで、実行することはできません。

既に抽出しようとしている場合は、getResourceまたはgetResourceAsStreamを少し間違って使用している可能性があります。これは、ClassLoader.getResourceAsStreamClass.getResourceAsStreamのどちらを呼び出すかによって異なりますので、これは簡単です。最初は絶対パス(暗黙的)を使用するだけで、後者は絶対パスまたは相対パスを使用できます。たとえば、あなたのケースでは、あなたがしたいと思います:

BatFileRead.class.getResourceAsStream("/md.bat") 

または

BatFileRead.class.getClassLoader().getResourceAsStream("md.bat") 

あなたはBATファイルは間違いなくjarファイルで終わるされていることを確認しましたか?

jar tvf file.jar 

で内容を一覧表示するだけで、その内容を確認できます。

+0

私はそこにbatファイルがあることを確認しました。よく私は使用する Runtime.getRuntime()。exec( "md.bat");私のクラスの中でbatファイルを実行する。 –

+0

あなたがそれらを抽出しない限り、確かにうまくいかないでしょう。 Windowsのコマンドシェルは、jarファイルを認識しません。 –

0

file.jarfile.zipにコピーし、file.zipを開きます(ダブルクリックや7-Zipなど)。あなたの.batファイルがありますか? .batファイルが存在しない場合は、.batファイルをEclipseプロジェクトに追加し、Eclipseで再ビルドする必要があります。 .batファイルがある場合は、しかし、あなたはまだあなた.javaアプリケーションからIOException開き、それを得る、そしてIOExceptionをトリガーするコードスニペットを投稿してください、と(file.zipの完全なリストを与えるC:\testdirfile.zipを抽出してリストを取得し、実行してくださいコマンドラインでdir /s C:\testdir)。

ジョンスキートはそれがjava.lang.Class.getResourceAsStreamjava.lang.ClassLoader.getResourceAsStreamを使用してInputStreamとして.jarファイル内の任意のファイルを開くことが可能であるが(tutorialを参照するか、またはJava API docsでそれらを見つける。)という権利ですが、.batファイルを実行するためにことに注意してください最初に.jarファイルを抽出する必要があります。

+0

java.io.IOException:プログラム "ul.bat"を実行できません:CreateProcess error = 2、java.lang.ProcessBuilder.start(ProcessBuilder.java:459) で指定されたファイル が見つかりません。 Runtime.exec(Runtime.java:593) at java.lang.Runtime.exec(Runtime.java:431) at java.lang.Runtime.exec(Runtime.java:328) at com.myproj.BatFileRead exec = Runtime.getRuntime()。exec( "ul.bat");これを使用して、batファイルを実行します。 –

1

これは非常に危険です。 BATを扱うときは必ず手袋を使用してください。彼らはかみつき、かなり痛いです。また、バットはほとんどどんな穴にもフィットするが、十分に大きな開口部を持つジャーを試してみる。

幸運にも、これを自宅で試してはいけません。これは専門家によって行われます。

関連する問題