0

いくつかの .exe ファイルを実行する Java で書かれたコードがあります。最初に実行場所から一時ファイルを作成し、実行後にそのファイルを破棄します。

これに関する唯一の問題は、実行可能ファイルが main 関数を持つクラスと同じパッケージにある必要があることです。プロジェクトの JAR ファイルを作成している間、その exe ファイルが実行されないため、他の場所からも .exe ファイルを配置してアクセスしたいと考えています。

プロジェクト内の場所に関係なく、.exe ファイルを JAR ファイルの一部にする他の方法はありますか?

コードは次のとおりです。

package com.web.frame;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
//import java.net.URL;

public class Test{
  public void Test1(String fileAddr,String filename, String destFilenam) throws       Exception {
    // Place .exe into the package folder. 
  InputStream src =this.getClass().getResourceAsStream("DECRYPT.exe");
if(src!=null) {
   File exeTempFile = File.createTempFile("dspdf", ".exe");
   byte []ba=new byte[src.available()];
   src.read(ba,0,ba.length);
 exeTempFile.deleteOnExit();  
   FileOutputStream os=new FileOutputStream(exeTempFile);
   os.write(ba,0,ba.length);
   os.close();
   String hello=exeTempFile.getParent();
   System.out.println("Current Directory Of file : "+hello);
   String hello1=exeTempFile.getName();
   System.out.println("Full Name Of File : "+hello1);
   int l=hello1.length();
    l=l-4;
   char[] carray=hello1.toCharArray();
   String s = new String(carray,0,l);
   System.out.println(s);
   String param="cmd /c cd "+hello+" && "+s+" d 23 11 23 "+fileAddr+"\\"+filename+" "+destFilenam;
   Runtime.getRuntime().exec(param);
   Runtime.getRuntime().exec("c:\\Program Files\\VideoLAN\\VLC\\vlc.exe "+hello+"\\"+destFilenam);
   Runtime.getRuntime().exec("cmd /c del"+hello+"\\"+destFilenam);
  }
else
   System.out.println("Executable not found");
  } 

}
4

1 に答える 1

0

できる最大のことは、exeをクラスパスの任意の場所に配置することです。jar のマニフェストにクラスパス要素があることを確認してください。次に、 Test.class.getResourceAsStream("") と言ってexeにアクセスできるはずです

したがって、フォルダーを作成し、そのフォルダーにexeを入れて、フォルダーをクラスパスに含めます。

于 2012-04-05T03:25:25.410 に答える