在您的所有帮助下,我得以用Java完成我的第一个项目。现在,我想创建一个jar并运行jar中的应用程序(Java项目- 这是一个普通的控制台应用程序,该应用程序依赖于另一个项目(控制台应用程序))。
我通过右键单击创建了一个带有Eclipse的罐子-导出-创建了一个罐子。当我尝试从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,但是这次它说没有main方法,而我在类中有main方法
请有人请说明创建清单的一个明确步骤(如果您向我展示我们拥有清单文件的地方的文件夹结构,这对我很有帮助)
假设您具有以下目录结构:
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
这将Main.class在bin目录中创建文件。要将其打包为* .jar文件,您可以:1)使用二进制文件创建jar,并在cmd中指定Main class 2)创建Manifes并将其嵌入到jar中(我将重点介绍这一点)
Main.class
bin
您应该在其META-INF下src并在其中创建MANIFEST.mf文件的目录中创建目录
META-INF
src
MANIFEST.mf
您的清单应如下所示:
Manifest-Version: 1.0 Created-By: <Your info> Main-Class: com.example.Main
请记住在清单末尾添加空行!!
在这种情况下,您可以指定Manifest-Version属性,Created-By属性以及要在Main-Class属性中运行的主类的完全限定名称
Manifest-Version
Created-By
Main-Class
要使用此清单文件和二进制文件创建Jar,请调用命令
$ cd bin $ jar cfm MyJavaProject.jar ..\src\META-INF\MANIFEST.MF .
这将创建新的jar MyJavaProject.jar并使用您的清单
MyJavaProject.jar
如果您的项目依赖于外部类或jar,则在编译时将它们添加到类路径中(-cp可选),并在其中添加另一行Manifest
-cp
Manifest
ClassPath: path/to/dependent/jars/jar.jar
重新编译它并创建新的jar并享受您的Java任务:)
有关清单的更多信息,请参见:docs
PS:使用罐子,从cmd行进行放大似乎很丑陋,但是它可以教您一些类似ava的概念。如果要跳过它,请考虑使用Apache Maven或Apache Ant