dja*_*fan 5 java installer jar self-extracting
我知道如何创建可执行的.jar文件.互联网上有很多例子.我想知道的是,如果有人知道可执行.jar文件可以自动将其自身部分提取到"运行目录"的方式吗?
所以,而不是:
jar xf TicTacToe.jar TicTacToe.class TicTacToe.properties
java -jar TicTacToe.jar
Run Code Online (Sandbox Code Playgroud)
我只想这样做:
java -jar TicTacToe.jar TicTacToe.class TicTacToe.properties
Run Code Online (Sandbox Code Playgroud)
这基本上是一个自解压安装程序.这是可能的,如果是这样,需要什么代码才能做到这一点?
注意:最终,一旦它工作,我将它包装到launch4j中,以模拟.exe自解压安装程序.
您可以编写一个main方法来检查文件是否存在,如果没有提取它们(通过将资源流复制到文件中).如果您只需要一组固定的文件(例如您的示例),可以使用以下方法轻松完成:
public class ExtractAndStart
{
public static void main(String[] args)
{
extractFile("TicTacToe.properties");
Application.main(args);
}
private static void extractFile(String name) throws IOException
{
File target = new File(name);
if (target.exists())
return;
FileOutputStream out = new FileOutputStream(target);
ClassLoader cl = ExtractAndStart.class.getClassLoader();
InputStream in = cl.getResourceAsStream(name);
byte[] buf = new byte[8*1024];
int len;
while((len = in.read(buf)) != -1)
{
out.write(buf,0,len);
}
out.close();
in.close();
}
}
Run Code Online (Sandbox Code Playgroud)
还有自我提取档案的创建者,但他们通常提取所有,然后开始一些内部组件.
这是一篇简短的文章:
http://www.javaworld.com/javatips/jw-javatip120.html
它建议使用看起来过时的ZipAnywhere.但Ant安装程序可能是一个不错的选择.