使用JAR在Java中归档文件 JAR仍然是一种流行的文件归档格式,至少在Java领域是如此,它被广泛用于许多不同的目的。...可执行JAR文件保存了一个清单文件,指定了类路径和应用程序的入口点,它只是包含主方法的类:main class:App.MainClass。...:在本例中是app.JAR。...执行此操作的基本命令如下: $ jar tf app.jar 这显示了一个类似于以下内容的列表,取决于JAR中的文件名: META-INF/ META-INF/MANIFEST.MF a.txt b.class...c.jpg 注意,除了我们归档的三个文件外,JAR文件还包含META-INF文件夹/目录中的MANIFEST.MF。
由于这个平台的程序主要是用 Java 编写的,所以这种格式与 Java 包的格式 -- jar(Java Archive)有很多共同点,它用于将代码,资源和元数据(来自可选的META-INF目录 )文件使用...基本上,在 Android 的情况中,apkbuilder工具将构建的项目文件压缩到一起[1],使用标准的 Java 工具jarsigner对这个归档文件签名。...在应用程序签名过程中,jarsigner创建META-INF目录,在 Android 中通常包含以下文件:清单文件(MANIFEST.MF),签名文件(扩展名为.SF)和签名块文件(.RSA或.DSA)...清单文件(MANIFEST.MF)由主属性部分和每个条目属性组成,每个包含在未签名的apk中文件拥有一个条目。 这些每个条目中的属性存储文件名称信息,以及使用 base64 格式编码的文件内容摘要。...在版本 2.2 之前,此方法检查数组s1是否包含在s2中。这种行为允许系统安装升级,即使它们已经使用原始应用程序的证书子集签名[2]。 在几种情况下,需要同一开发人员的应用程序之间的信任关系。
由于这个平台的程序主要是用 Java 编写的,所以这种格式与 Java 包的格式 – jar(Java Archive)有很多共同点,它用于将代码,资源和元数据(来自可选的META-INF目录 )文件使用...基本上,在 Android 的情况中,apkbuilder工具将构建的项目文件压缩到一起[1],使用标准的 Java 工具jarsigner对这个归档文件签名[6]。...在应用程序签名过程中,jarsigner创建META-INF目录,在 Android 中通常包含以下文件:清单文件(MANIFEST.MF),签名文件(扩展名为.SF)和签名块文件(.RSA或.DSA)...清单文件(MANIFEST.MF)由主属性部分和每个条目属性组成,每个包含在未签名的apk中文件拥有一个条目。 这些每个条目中的属性存储文件名称信息,以及使用 base64 格式编码的文件内容摘要。...在版本 2.2 之前,此方法检查数组s1是否包含在s2中。这种行为允许系统安装升级,即使它们已经使用原始应用程序的证书子集签名[2]。 在几种情况下,需要同一开发人员的应用程序之间的信任关系。
META-INF/MANIFEST.MF 的清单文件。...输出还显示 JAR 文件包含一个默认清单文件 META-INF/MANIFEST.MF,该文件是由 JAR 工具自动放置在存档中的。 有关更多信息,请参阅理解默认清单部分。...存档中只能有一个清单文件,并且它始终具有路径名 META-INF/MANIFEST.MF 当您创建一个 JAR 文件时,默认清单文件只包含以下内容: Manifest-Version: 1.0 Created-By...Jar 工具会自动将一个默认清单放入你创建的任何 JAR 文件中,路径名为 META-INF/MANIFEST.MF。你可以通过修改默认清单来启用特殊的 JAR 文件功能,比如包封装。...例如,这个命令创建了app.jar,其中清单中的Main-Class属性值设置为MyApp: jar cfe app.jar MyApp MyApp.class 你可以通过运行以下命令直接调用这个应用程序
用Eclipse自带的Export功能:在该项目下建立自定义配置文件MANIFEST.MF:什么是MANIFEST.MF:MANIFEST.MF描述Jar文件信息的说明文件;JAR文件中经常可以看到文件中包含着一个...META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF;该文件包含主类以及加载类路径等信息;MAINFEST.MF文件有着严格的格式限制,一般都是系统生成,如果是自己写的话,...(即lib文件和打包的jar文件在同一个目录下),并将相关的jar包放在里面。...包才能找到你的主class去运行,否则将会出现“jar中没有主清单属性”的错误。...右击Java工程选择Export—>选择JAR file—>Next选择要打包的文件,并进行选项配置选择我们在第一步中自定义的配置文件路径Finish
运行 jar 出现"中没有主清单属性" 文章目录 现象 分析原因 现象 在运行通过 “java -jar xxx.jar” 的时候, 报 “中没有主清单属性” 错误....\joke-server-1.0.0-SNAPSHOT.jar中没有主清单属性 分析原因 看报错像是 jar 包中缺少了属性配置....META-INF, 元数据信息, 打开后里面有一个 MANIFEST.MF 文件, 该文件指明了程序的入口以及版本信息等内容: Manifest-Version: 1.0 Implementation-Title...代表了类的路径, 所有编译后的 class 文件, 以及配置文件, 都存储在该路径下 Spring-Boot-Lib 表示依赖的jar包存储的位置 怎么解决这些问题呢?...运行 java -jar xxx.jar 时会根据主清单属性找到启动类, 从而启动程序 <groupId
(manifest.mf文件中可以对jar包及其中的内容作一些一设置) -0 产生jar包时不对其中的内容进行压缩处理 -M 不产生所有文件的清单文件(Manifest.mf)。...(8)忽略manifest.mf文件 jar cvfM hello.jar hello 生成的jar包中不包括META-INF目录及manifest.mf文件 (9)加-C应用: jar...Main-Class主要当jar中有多个.class类文件时,java并不知道那个才是主类,所以要指定,如果jar包中只有一个类当然可以不指定。...manifest.mf中已正确的设置了Mani-Class属性,再强调一下一定要注意规则。...(3) 用WinRAR生成.jar文件 我们已经说过JAR包与ZIP包主要区别就是JAR包中多一个META-INF的目录,META-INF目录下有一个manifest.mf文件,我们只要建立好相关的目录一压缩就可以了
文章如题:在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性。这是怎么回事? 工具/原料 首先确认你是否有文件好java。 电脑需要安装winrar。...方法/步骤 1 、在java中编译JAR文件的时候我们都会用到,jar这个命令。当用着jar 文件时候我们不可少的是cvf这几个参数来生成jar文件。...但是用个文件来了,在用不使用工具的前提下我们生成的jar文件包后运行会出现。某某类的没有主清单属性。...这样的问题是因为,jar包中的META-INF文件夹下的MANIFEST.MF文件缺少定义jar接口类。说白了就是没有指定class类。...之后,在双击打开这个文件夹META-INF: 再选择MANIFEST.MF文件,用记事本打开它: 现在看看文件中是否有Main-Class这样一行文字,如果没有的话那么添加一行。
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF...除了前面提到的一些属性外,你也可以在MANIFEST.MF中增加自己的属性以及响应的值,例如J2ME程序jar包中就可能包含着如下信息 MicroEdition-Configuration: CLDC...Java 2 平台识别并解释 META-INF 目录中的下述文件和目录,以便配置应用程序、扩展和类装载器: MANIFEST.MF。这个 manifest 文件定义了与扩展和包相关的数据。...JAR 文件的应用程序 java -jar app.jar 可执行的 JAR 一个 可执行的 jar 文件是一个自包含的 Java 应用程序,它存储在特别配置的JAR 文件中,可以由 JVM 直接执行它而无需事先提取文件或者设置类路径...在验证一个签名的 JAR 时,将签名文件的摘要值与对 JAR 文件中的相应项计算的摘要值进行比较。 清单 1.
前者的打包很简单,在 eclipse 中, 直接选中要打包的 java 文件和其它资源、依赖文件, export → Java → JAR file 即可。...默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过 java命令运行的JAR文件,还要满足两个条件: JAR包中的/META-INF...在您的 POM 文件的插件部分添加清单 1 所示代码: 清单 1....,maven-jar-plugin 修改它的 archive 属性, 特别是存档文件的 manifest 属性,它控制 MANIFEST.MF 文件的内容。...在清单 1 中,classpathPrefix 指出,相对存档文件,所有的依赖项 应该位于 “lib” 文件夹。
使用Spring Boot微服务搭建框架,在eclipse和Idea下能正常运行,但是在打成jar包部署或者直接使用java -jar命令的时候,提示了xxxxxx.jar中没有主清单属性: D:\hu-git...中没有主清单属性 通过maven打jar包:mvn install, 或者在IDE中右击选择Run as -> maven install。...在这里有一个问题就是主清单属性是什么?...以SpringBoot为例,jar包中包含了三个文件夹:BOOT-INF,META-INF,org,可以把jar包解压到文件夹下查看,其中META-INF文件夹下有一个MANIFEST.MF文件,该文件指明了程序的入口以及版本信息等内容...org.springframework.boot spring-boot-maven-plugin 在运行mvn install的时候,自动生成这些主清单属性,运行java -jar xxx.jar时会根据主清单属性找到启动类
清单文件和主类条目 在大多数jar文件中,在目录META-INF里有个叫MANIFEST.MF的文件。在该文件中,有一个叫Main-Class的特殊条目,它说明了java -jar命令执行的类。...manifest = new Manifest(); } 设置Main类的属性 我们把Main-Class条目放到清单文件里main属性部分。...一旦我们从mainfest对象中得到这个属性集,我们就能设置合适的main类。然而,如果Main-Class属性存在于原始的JAR文件中怎么办?这个程序仅仅打印出一个警告信息并退出。...= null) { //排除旧jar文件中的清单文件 if (“META-INF/MANIFEST.MF”.equals(entry.getName())) continue; //把条目写到输出jar...试着用java -jar命令运行myjar.jar文件,之后在myjar_r.ja文件上。注意他们的不同!完成之后,研究在每一个jar包中的清单文件(META-INF/MANIFEST.MF)。
image.png 在正确编译好java程序之后,打包,然后在命令行输入java -jar ,却弹出没有主清单属性或者找不到或无法加载主类。...解决办法: 1、如果使用maven-jar-plugin插件打包的,指定主类即可。...2.1、增加一个maven-jar-plugin插件指定主类。 2.2、指定MANIFEST.MF文件。MANIFEST.MF可以通过编译器生成。...--src/main/resources/META-INF/MANIFEST.MF--> ...-- 配置描述符文件 --> src/main/assembly/assembly.xml </descriptors
idear 打包报:jar中没有主清单属性 部分参考自,InteliJ IDEA生成可执行jar运行提示没有主清单属性 – JavaShuo 并完善之。...with dependencies…”,以下: 2)选择一个Main Class,而后系统默认指定META-INF/MANIFEST.MF的路径要修改为src下(注意不要放到main/java目录下,...不然打成的jar中META-INF/MANIFEST.MF不含有Main Class信息,生成可执行jar运行会提示没有主清单属性)默认的时X:\你的项目目录\src\main\java 后面的2级目录要删除...NettyDemo.jar中没有主清单属性 看了这个文章: InteliJ IDEA生成可执行jar运行提示没有主清单属性 – JavaShuow 我尝试把 “我的idea 设置发布jar包时默认...,不在报“NettyDemo.jar中没有主清单属性”了。
hello.jar中没有主清单属性 F:\你的工程所在路径>java -jar hello.jar hello.jar中没有主清单属性 解决办法1: java -classpath hello.jar...但是一般可直接执行的*.jar文件,用winrar等解压软件打开会发现都有一个META-INF的文件夹,这个文件夹中必须有个MANIFEST.MF文件,这个文件主要是用来描述可执行的*.jar的执行入口文件...,f表示给生成的jar包命名 (4)运行jar包 java -jar hello.jar 这时会报如下错误 hello.jar中没有主清单属性 用压缩软件打开hello.jar,会发现里面多了一个...\两个类的jar>mkdir META-INF 在META-INF下创建MANIFEST.MF F:\Example_Project\两个类的jar>type nul>META-INF\MANIFEST.MF...\两个类的jar>下创建META-INF文件夹 F:\Example_Project\有目录结构的两个类jar>mkdir META-INF 在META-INF下创建MANIFEST.MF F:\Example_Project
或者SHA256)消息摘要算法提取出该文件的摘要然后进行BASE64编码后,作为“SHA1-Digest”属性的值写入到MANIFEST.MF文件中的一个块中。...该块有一个“Name”属性,其值就是该文件在apk包中的路径。...2)计算这个MANIFEST.MF文件的整体SHA1值,再经过BASE64编码后,记录在CERT.SF主属性块(在文件头上)的“SHA1-Digest-Manifest”属性值值下。...首先,使用证书文件(在META-INF目录下,以.DSA、.RSA或者.EC结尾的文件)检验签名文件(在META-INF目录下,和证书文件同名,但扩展名为.SF的文件)是没有被修改过的。...然后,使用签名文件,检验MANIFEST.MF文件中的内容也没有被篡改过; JarVerifier.VerifierEntry.verify做了最后一步验证,即保证apk文件中包含的所有文件,对应的摘要值与
(默认情况下会自动生成META-INF/MANIFEST.MF文件) -O ,创建jar包时不对内容进行压缩 -M ,不自动产生manifest.mf文件 -i ,创建jar包时创建META-INF...默认打包 */ // 生成的src.jar中就含src目录和jar自动生成的META-INF目录(内含MAINFEST.MF清单文件) jar -cvf src.jar src /* 2....追加内容到jar包 */ //追加MAINFEST.MF清单文件以外的文件,会追加整个目录结构 jar -uvf src.jar other\additional.class //追加清单文件,会追加整个目录结构...四、可执行的JAR包 当jar包中包含可执行程序时,就可以通过 java -jar src.jar 命令来执行该可执行程序。...关于META-INF目录以及META-INF/MAINFEST.MF清单文件的内容,将在《Java魔法堂:打包知识点之META-INF/MAINFEST.MF》中探讨。
,则Spring将在编译时在类路径中搜索,如果找不到或发现多个都无法启动。...Spring的Jar包或War包的META-INF/MANIFEST.MF清单如下: Manifest-Version: 1.0 Start-Class: com.example.MyApplication...Main-Class: org.springframework.boot.loader.JarLauncher 我们需要在清单中定义Start-Class属性,由JarLauncher或WarLauncher...可以在pom.xml的属性部分中定义为start-class元素: 请注意,只有在我们的pom.xml 中将spring-boot-starter-parent添加为时, 才能使用此属性。
fileonerror表示当碰到错误就自动停止。 6、标签 该标签用来执行编译生成的.class文件,其属性如下: classname 表示将执行的类名。...jar表示包含该类的JAR文件名。 classpath所表示用到的类路径。 fork表示在一个新的虚拟机中运行该类。 failonerror表示当出现错误时自动停止。...>中的default属性声明。 3.帮助 有些target包括有description属性,而另一些没有。这是因为ant会区别主目标和子目标。.../app.jar中 2....="**/Test.class" manifest="my.mf" /> manifest属性指定自己的META-INF/MANIFEST.MF文件,而不是由系统生成 4.3.2 war
要想调试springboot加载方式,不能直接在idea中运行主程序,要使用真实场景下的java -jar方式运行,需要做两件事: 1、需要打包springboot应用程序 2、在IDEA中用java...与之前的做个小实验,但这次做点小变动,在依赖的jar中也放一个META-INF/app.properties文件。...然而事实并非无此: 这不得不提到在URLClassPath里面有两个内部Loader: FileLoader 是加载文件夹中的文件 JarLoader 是加载jar中的文件 在《Classloader...,因为根节点不同,所以文件没有加载到,项目根目录里面的META-INF/app.properties,是在整体工程根目录的META-INF/app.properties中。...().getResource("com/zhuxingsheng/META-INF/app.properties"); 总结 此篇一是介绍了怎么在IDEA中debug出运行java -jar springboot.jar
领取专属 10元无门槛券
手把手带您无忧上云