0

我有一些用 Java 编写的代码,可以执行一些 .exe 文件。它首先从执行它的位置创建一个临时文件,然后在执行完成后销毁该文件。

唯一的问题是,它要求可执行文件与具有 main 函数的类在同一个包中。我也想从其他位置放置和访问我的 .exe 文件,因为在创建我的项目的 JAR 文件时,它从不执行该 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 回答