使用代码把一个目录打包成jar

简介: 使用代码把一个目录打包成jar

具体代码如下:

    private String javaClassPath = "";
    private byte[] readerBuffer = new byte[4096];
    private void addFileToJar(File source, JarOutputStream target) throws IOException
    {
        BufferedInputStream in = null;
        try
        {
            if (source.isDirectory())
            {
                for (File nestedFile : source.listFiles())
                {
                    addFileToJar(nestedFile, target);
                }
                return;
            }
            String middleName = source.getPath().replace("\\", "/").substring(javaClassPath.length());
            if (middleName.startsWith("/"))
            {
                middleName = middleName.substring(1);
            }
            JarEntry entry = new JarEntry(middleName);
            entry.setTime(source.lastModified());
            target.putNextEntry(entry);
            in = new BufferedInputStream(new FileInputStream(source));
            while (true)
            {
                int count = in.read(readerBuffer);
                if (count == -1)
                {
                    break;
                }
                target.write(readerBuffer, 0, count);
            }
            target.closeEntry();
        }
        finally
        {
            if (in != null)
            {
                in.close();
            }
        }
    }
    void create(final String jarDataDir, final String destDir, final File jarSrc)
    {
        try
        {
            String jarName = jarSrc.getAbsolutePath();
            jarName = jarName.substring(jarName.lastIndexOf('\\')+1);
            jarName = destDir + File.separator + jarName;
            javaClassPath = jarDataDir;
            //Manifest manifest = new Manifest();
            //manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
            //JarOutputStream target = new JarOutputStream(new FileOutputStream(destJarFile), manifest);
            JarOutputStream target = new JarOutputStream(new FileOutputStream(jarName));
            addFileToJar(new File(javaClassPath), target);
            target.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

本文假设目录下已有Manifest;也可以使用注释中的代码。能不能指定某个文件呢?还真没找到办法。

目录
相关文章
|
12天前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
34 3
|
2月前
|
Java
jar包目录介绍
jar包目录介绍
31 2
|
3月前
|
Java Maven 容器
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
|
3月前
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
|
3月前
|
Java Windows
【Azure 应用服务】App Service 部署txt静态文件和Jar包在不同目录中的解决办法
【Azure 应用服务】App Service 部署txt静态文件和Jar包在不同目录中的解决办法
|
3月前
|
Java Docker 容器
pandora boot热点应用探索问题之使用目录形态压缩jar包的问题如何解决
pandora boot热点应用探索问题之使用目录形态压缩jar包的问题如何解决
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
55 1
|
5月前
|
消息中间件 资源调度 Java
实时计算 Flink版产品使用问题之拉取代码没有这个类,但是在下载的jar包中有这个类,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
Java Maven
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
886 0
|
5月前
|
缓存 Java Maven
IDEA如何把MAVEN项目打包成jar包并且用命令行启动
IDEA如何把MAVEN项目打包成jar包并且用命令行启动
77 0

热门文章

最新文章

下一篇
无影云桌面