栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

运行打包在jar文件中的exe

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

运行打包在jar文件中的exe

这会将提取.exe到本地磁盘上的本地文件。当Java程序存在时,该文件将被删除。

import java.io.Closeable;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URI;import java.net.URISyntaxException;import java.net.URL;import java.security.CodeSource;import java.security.ProtectionDomain;import java.util.zip.ZipEntry;import java.util.zip.ZipException;import java.util.zip.ZipFile;public class Main{    public static void main(final String[] args)        throws URISyntaxException,    ZipException,    IOException    {        final URI uri;        final URI exe;        uri = getJarURI();        exe = getFile(uri, "Main.class");        System.out.println(exe);    }    private static URI getJarURI()        throws URISyntaxException    {        final ProtectionDomain domain;        final CodeSource       source;        final URL   url;        final URI   uri;        domain = Main.class.getProtectionDomain();        source = domain.getCodeSource();        url    = source.getLocation();        uri    = url.toURI();        return (uri);    }    private static URI getFile(final URI    where,         final String fileName)        throws ZipException,    IOException    {        final File location;        final URI  fileURI;        location = new File(where);        // not in a JAR, just return the path on disk        if(location.isDirectory())        { fileURI = URI.create(where.toString() + fileName);        }        else        { final ZipFile zipFile; zipFile = new ZipFile(location); try {     fileURI = extract(zipFile, fileName); } finally {     zipFile.close(); }        }        return (fileURI);    }    private static URI extract(final ZipFile zipFile,         final String  fileName)        throws IOException    {        final File         tempFile;        final ZipEntry     entry;        final InputStream  zipStream;        OutputStream       fileStream;        tempFile = File.createTempFile(fileName, Long.toString(System.currentTimeMillis()));        tempFile.deleteonExit();        entry    = zipFile.getEntry(fileName);        if(entry == null)        { throw new FileNotFoundException("cannot find file: " + fileName + " in archive: " + zipFile.getName());        }        zipStream  = zipFile.getInputStream(entry);        fileStream = null;        try        { final byte[] buf; int          i; fileStream = new FileOutputStream(tempFile); buf        = new byte[1024]; i          = 0; while((i = zipStream.read(buf)) != -1) {     fileStream.write(buf, 0, i); }        }        finally        { close(zipStream); close(fileStream);        }        return (tempFile.toURI());    }    private static void close(final Closeable stream)    {        if(stream != null)        { try {     stream.close(); } catch(final IOException ex) {     ex.printStackTrace(); }        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号