我有一些用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");
}
}
答案 0 :(得分:0)
您可以执行的最大操作是将exe放在类路径中的任何位置。确保jar的清单有一个classpath元素。那么你应该能够通过说Test.class.getResourceAsStream(“”)
来访问exe因此,创建一个文件夹,将exe放入该文件夹并在文件路径中包含该文件夹。