java jar的清单属性
在你的帮助下,我能够用java完成我的第一个项目。 现在我想创建一个jar并运行应用程序(Java项目 – 它是一个普通的控制台应用程序,它有另一个项目(控制台应用程序)作为依赖)来自jar。
我通过右键单击创建了一个带有eclipse的jar – export – 创建了一个jar。 当我尝试从我的cmd运行这个jar时,我有一个错误(下面是我正在设置的错误)
no main manifest attribute, in AAA.jar
我用Google搜索了错误 – 大多数都是创建清单文件。 我在项目中创建了一个类似于src级别的清单文件,如下所示
Manifest-Version: 1.0 Main-Class: com.Pacakename.mainclass Class-Path: log4j-1.2.16.jar db2jcc.jar db2jcc_license_cu.jar
然后J尝试再次运行jar,但这次它没有说主流方法我在课堂上有一个主方法
请有人请说明创建清单的明确步骤(如果你向我展示我们有Manifest文件的地方的文件夹结构,那真的很有用)
让我们假设您有以下目录结构:
MyJavaProject |-src |- com |- example |- Main.java
要在cmd行中编译此类项目(无外部依赖项),您需要调用命令
$ cd MyJavaProject $ mkdir bin //to separate *.class file from source files $ javac -d bin src\com\example\Main.java
这将在bin
目录中创建Main.class
文件。 要将它打包到* .jar文件,您可以:1)创建带有二进制文件的jar并在cmd中指定Main类2)创建Manifes并将其嵌入jar(我将重点关注这个)
您应该在src
下创建META-INF
目录,并在其中创建MANIFEST.mf
文件
您的清单应如下所示:
Manifest-Version: 1.0 Created-By: Main-Class: com.example.Main
记得在Manifest上添加空行!
在这种情况下,您可以指定Manifest-Version
属性, Created-By
属性以及要在Main-Class
属性中运行的主类的完全限定名称
要使用此Manifest文件和二进制文件创建Jar,请调用命令
$ cd bin $ jar cfm MyJavaProject.jar ..\src\META-INF\MANIFEST.MF .
这将创建一个名为MyJavaProject.jar
新jar并使用你的清单
如果你的项目取决于外部类或jar,在编译时将它们添加到类路径中( -cp
选项)并在Manifest
添加另一行
ClassPath: path/to/dependent/jars/jar.jar
重新编译它并创建新的jar并享受你的Java任务:)
有关Manifest的更多信息,请参阅: docs
PS:使用jar子,cmd线上的amnifest可能看起来很难看,但它可以教你一些类似ava的概念。 如果您想跳过它,请考虑使用Apache Maven或Apache Ant
如果您正在使用maven,我可以建议您使用shade插件生成带有所有依赖项(和manifest :-))的可运行jar。
将其包含在您的pom.xml中 :
... org.apache.maven.plugins maven-shade-plugin 2.1 package shade org.sonatype.haven.HavenCli ...
然后执行mvn clean package shade:shade
来构建一个jar,你可以使用java -jar jarfilename.jar
从命令行运行java -jar jarfilename.jar
。
如果你正在使用eclipse,你可以使用“导出” – > Runnable jar来实现你的目标。 在这种情况下,您应该为项目提供有效的运行配置,因为eclipse将此运行配置用作runnable jar的一种蓝图。
在这种情况下,eclipse将为您构建清单。