首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈 java 构建可执行 jar 包的几种方式

会直接报错:无法找到或者找不到 xxx 依赖包/,这是由于你没有定义 MANIFEST.MF 资源描述文件所致, 或者你直接把依赖的 jar 包打进了你最终的 jar,而这种嵌套的依赖...默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过 java命令运行的JAR文件,还要满足两个条件: JAR包的/META-INF...项目所有的依赖都必须在Classpath,其可以通过 MANIFEST.MF 指定或者隐式设置。...关于项目的依赖,它很聪明地将依赖 JAR文件全部解压后,再将得到的.class文件连同当前项目的.class文件一起合并到最终的CLI包,这样,在执行CLI JAR文件的时候,所有需要的就都在Classpath...插件通过一个 元素公布了其配置,在本例maven-jar-plugin 修改它的 archive 属性, 特别是存档文件的 manifest 属性,它控制 MANIFEST.MF

3.7K50
您找到你想要的搜索结果了吗?
是的
没有找到

jar没有主清单属性啥意思啊_eclipse 找不到或无法加载

如下图所示: 清单属性是jar包MANIFEST.MF文件的一个属性,MANIFEST.MF文件位于jar包的META_INF路径下 打开MANIFEST.MF文件,里面有如下属性: Manifest-Version...Main-Class:属性值代表了Spring Boot启动jar包的程序,值为 org.springframework.boot.loader.JarLauncher,这个就是Springboot启动项目的...Start-Class:属性值代表了Spring Boot程序的入口,即XXXApplication Spring-Boot-Classes:属性值代表了路径,所有编译后的class文件,以及配置文件...,都存储在该路径下 Spring-Boot-Lib:属性值代表了表示依赖的jar包存储的位置 以上这些属性是Springboot打包插件默认生成,缺少这些属性项目无法运行。...所以需要再pom文件添加Springboot打包插件: org.springframework.boot spring-boot-maven-plugin 按照一个正统的教程到这里应该就结束了,但是…

1.9K20

SpringBoot系列-- jar可执行原理

普通插件maven-jar-plugin生成的包和spring-boot-maven-plugin生成的包之间的直接区别,是fat jar主要增加了两部分,第一部分是lib目录,存放的是Maven依赖的...3.3.9 Build-Jdk: 1.8.0_171 repackager生成MANIFEST.MF文件为以上信息,可以看到两个关键信息Main-Class和Start-Class。...继承JDK提供JarFile java.util.jar.JarEntryDK工具提供的``jar```文件条目 org.springframework.boot.loader.jar.JarEntry...其二,如果在这个机制下,由于fat jar依赖的各个第三方jar文件,并不在程序自己classpath下,也就是说,如果我们采用双亲委派机制的话,根本获取不到我们所依赖的jar包,因此我们需要修改双亲委派机制的查找...我从Maven的自定义插件开始进行追踪,巩固了对Maven的知识点,在这个过程甚至了解到JDK对jar的读取是有提供对应的工具。最后最重要的知识点则是自定义加载器。

89310

SpringBoot - 探究Spring Boot应用是如何通过java -jar 启动的

的源码中指定了整个应用的启动; 简单来说: java -jar会去找jar的manifest文件,去找到Main-Class对应的真正的启动; 那看看去吧 ?...spring-boot-maven-plugin的repackage能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为.original*...JarLauncher并调用父Launcher的launch方法启动程序。...(2)以第一步构建的ClassLoader加载MANIFEST.MF文件Start-Class指向的业务,并且执行静态方法main。进而启动整个程序。...至此,才执行我们应用程序入口的main方法,所有应用程序文件均可通过/BOOT-INF/classes加载,所有依赖的第三方jar均可通过/BOOT-INF/lib加载。 ?

1.3K30

VIP创新项目1课程总结2021-2022学年第1学期

-d参数:编译时,同时由系统自动生成package目录 .参数:指定Hello.java的包名 将要生成在哪个目录下,.表示当前目录,可以任意指定 (3)将编译后的Hello.class文件打成jar...\有目录结构的两个jar>type nul>META-INF\MANIFEST.MF 这次我们换一种方式直接定义Main-Class。...META-INF/ 正在忽略条目META-INF/MANIFEST.MF # 执行hello.jar F:\Example_Project\读取jar内的文 件>java -jar hello.jar...5、mvn install 将项目生成 jar 包放在仓库,以便别的模块调用 2.5Maven pom.xml介绍 参考资源: https://blog.csdn.net/weixin_38569499...learngit.git 请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表

78920

Java EE7和Maven工程入门(4)

EAR MAVEN模块的主要目的是为了“配置”著名的maven-ear插件,这个插件将会被maven引用,并且用来生成我们最后的部署应用程序。...让我们检查一下sample-ear模块的’target’文件夹,最终的ear已经生成了。maven还在ear创建了’exploded’版本,(下图是放大版本)。...有一个小问题存在于sample-web.war的MANIFEST.MF文件。解压已生成的war文件,用文本编辑器打开MANIFEST.MF,会看到类似下面的内容: ? 你能找到错误吗?...默认生成MANIFEST.MF,顶级ejb jars(sample-services)指向了一个错误路径。...我们需要在父pom覆盖指定的默认行为,并为这个特殊的依赖关系指定一个正确项。如果碰巧有多个,那么需要为所有的在配置的顶级元素的jars添加(请确保你正确的做了这一点,在条目之间使用一个空格)。

84210

改变maven打包路径_Maven打包技巧「建议收藏」

实际的情形,如果你不声明该元素,Maven会帮你生成一个JAR包;如果你定义该元素的值为war,那你会得到一个WAR包;如果定义其值为POM(比如是一个父模块),那什么包都不会生成。...2.1.1 src/main/webapp **/*.jpg 源码包和Javadoc包 本专栏的《坐标规划》一文中曾解释过,一个Maven项目只生成一个构件,当需要生成其他附属构件的时候,就需要用上classifier...默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过java命令运行的JAR文件,还要满足两个条件: JAR包的/META-INF/MANIFEST.MF...项目所有的依赖都必须在Classpath。...关于项目的依赖,它很聪明地将依赖JAR文件全部解压后,再将得到的.class文件连同当前项目的.class文件一起合并到最终的CLI包,这样,在执行CLI JAR文件的时候,所有需要的就都在Classpath

2.1K20

java -jar 没有主清单属性_ideajar包已经导入但是还是报错

idear 打包报:jar没有主清单属性 部分参考自,InteliJ IDEA生成可执行jar运行提示没有主清单属性 – JavaShuo 并完善之。...with dependencies…”,以下: 2)选择一个Main Class,而后系统默认指定META-INF/MANIFEST.MF的路径要修改为src下(注意不要放到main/java目录下,...不然打成的jarMETA-INF/MANIFEST.MF不含有Main Class信息,生成可执行jar运行会提示没有主清单属性)默认的时X:\你的项目目录\src\main\java 后面的2级目录要删除...NettyDemo.jar没有主清单属性 看了这个文章: InteliJ IDEA生成可执行jar运行提示没有主清单属性 – JavaShuow 我尝试把 “我的idea 设置发布jar包时默认...,不在报“NettyDemo.jar没有主清单属性”了。

1.3K30

java jar 没有主清单属性_Spring Boot jar没有主清单属性的解决方法「建议收藏」

通过maven打jar包:mvn install, 或者在IDE右击选择Run as -> maven install。...以SpringBoot为例,jar包包含了三个文件夹:BOOT-INF,META-INF,org,可以把jar包解压到文件夹下查看,其中META-INF文件夹下有一个MANIFEST.MF文件,该文件指明了程序的入口以及版本信息等内容...包的程序 Start-Class属性就代表了Spring Boot程序的入口,这个应该有一个main方法 Spring-Boot-Classes代表了的路径,所有编译后的class文件,以及配置文件...没有主清单属性,也就是说没有按照SpringBoot的要求,生成这些必须的属性。...org.springframework.boot spring-boot-maven-plugin 在运行mvn install的时候,自动生成这些清单属性,运行java -jar xxx.jar时会根据清单属性找到启动

2.6K30

【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

Module 类型是 “Android Library” , multiple-dex-tools 是 Java 依赖库 , 其类型是 “Java or Kotlin Library” , 其作用是用于生成...file.delete() } } 三、解压 Zip 文件操作 ---- 解压操作主要使用 java.util.zip 包下的 api ; 首先 创建 zip 文件 , 获取 zip 文件条目...zip 文件 ; // 获取 zip 压缩包文件 val zipFile = ZipFile(zip) // 获取 zip 压缩包每一个文件条目..., 如果 apk 压缩包中含有以下文件 , 这些文件是 V1 签名文件保存目录 , 不需要解压 , 跳过即可 , 如果该文件条目 , 不是目录 , 说明就是文件 , 向刚才创建的目录写出文件 ;...deleteFile(dir) // 获取 zip 压缩包文件 val zipFile = ZipFile(zip) // 获取 zip 压缩包每一个文件条目

1.1K00
领券