精华内容
下载资源
问答
  • mysql驱动jar 文件适用MySQL5.7,本人亲测可用适用ieda成功连接到数据库(mysql-connector-java-5.1.25.jar
  • JAR文件

    千次阅读 2019-04-21 20:57:03
    当开发了一个应用程序后,这个应用程序包含了很多类,如果需要把这个应用程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个JAR文件提供给别人使用。只要别人在系统的CLASSPATH环境变量中添加这个JAR...

    引言
    Jar文件的全称是Java Archive File,意思是Java档案文件。通常Jar文件是一种压缩文件,与我们常见的ZIP压缩文件兼容,通常也被称为jar包。
    当开发了一个应用程序后,这个应用程序包含了很多类,如果需要把这个应用程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个JAR文件提供给别人使用。只要别人在系统的CLASSPATH环境变量中添加这个JAR文件,则Java虚拟机就可以自动在内存中解压这个JAR包,把这个JAR文件当做一个路径,在这个路径中查找所需要的类或包层次对应的路径结构。

    JAR命令:
    jar是随JD看自动安装的,在JDK安装目录下的bin目录中,Windows下文件名为jar.exe,Linux下文件名为jar。
    1、创建JAR文件: jar cf test.jar test
    该命令没有显示压缩过程,执行结果是将当前路径下的test路径下的全部内容生成一个test.jar文件。如果当前目录中已经存在test.jar文件,那么该文件将被覆盖。

    2、创建JAR文件,并显示压缩过程: jar cvf test.jar test

    3、查看JAR包内容: jar tf test.jar
    在test.jar文件已经存在的前提下,使用此命令可以查看test.jar中的内容。

    4、查看JAR包详细内容: jar tvf test.jar
    该命令与上一个命令相似,但是它更为详细。还显示文件的详细信息。

    5、更新JAR文件:jar uf test.jar Hello.class
    更新test.jar文件中的Hello.class 文件。如果文件中已有Hello.class文件,则使用新的Hello.class替换原来的文件。如果没有,则添加新的Hello.class文件。

    展开全文
  • 什么是JAR文件JAR文件格式基于流行的ZIP文件格式,并且用于将许多文件聚合为一个文件。 与ZIP文件不同,JAR文件不仅用于归档和分发,还用于库,组件和插件的部署和封装,并且直接由编译器和JVM等工具使用。 JAR...

    什么是JAR文件?

    JAR文件格式基于流行的ZIP文件格式,并且用于将许多文件聚合为一个文件。 与ZIP文件不同,JAR文件不仅用于归档和分发,还用于库,组件和插件的部署和封装,并且直接由编译器和JVM等工具使用。 JAR中包含的特殊文件(如清单和部署描述符)指导工具如何处理特定的JAR。

    可以使用JAR文件:

    • 用于分发和使用类库
    • 作为应用程序和扩展的构建块
    • 作为组件,小程序或插件的部署单元
    • 用于打包与组件关联的辅助资源

    JAR文件格式具有许多优点和功能,而传统的存档格式(例如ZIP或TAR)没有提供其中的许多优点和功能。 这些包括:

    • 安全。 您可以对JAR文件的内容进行数字签名。 然后,识别您的签名的工具可以选择授予您的软件安全特权,而该特权本来是不会的,并可以检测代码是否遭到篡改。
    • 减少下载时间。 如果将小程序捆绑在JAR文件中,则浏览器可以在单个HTTP事务中下载小程序的类文件和相关资源,而不必为每个文件打开新的连接。
    • 压缩。 JAR格式允许您压缩文件以进行有效存储。
    • 透明的平台扩展。 Java Extensions Framework提供了一种可以向Java核心平台添加功能的方法,该平台使用JAR文件打包扩展。 (Java 3D和JavaMail是Sun开发的扩展的示例。)
    • 包装密封。 可以选择将JAR文件中存储的软件包密封起来,以增强版本的一致性和安全性。 密封软件包意味着必须在同一JAR文件中找到该软件包中定义的所有类。
    • 软件包版本控制。 JAR文件可以保存有关其包含的文件的数据,例如供应商和版本信息。
    • 可移植性。 处理JAR文件的机制是Java平台核心API的标准部分。

    压缩和未压缩的JAR

    jar工具(有关详细信息,请参见jar工具 )默认情况下会压缩文件。 通常,未压缩的JAR文件的加载速度比压缩的JAR文件更快,这是因为消除了在加载过程中对文件进行解压缩的需要,但是对于未压缩的文件,通过网络下载的时间可能会更长。

    META-INF目录

    大多数JAR文件都包含一个META-INF目录,该目录用于存储程序包和扩展配置数据,例如安全性和版本信息。 Java 2平台可以识别和解释META-INF目录中的以下文件或目录,以配置应用程序,扩展和类加载器:

    • 清单文件 清单文件定义了与扩展和软件包有关的数据。
    • INDEX.LIST。 该文件由jar工具的新-i选项生成,并且包含应用程序或扩展中定义的软件包的位置信息。 它是JarIndex实现的一部分,由类加载器用来加速类加载过程。
    • xxx .SF。 这是JAR文件的签名文件。 占位符xxx标识签名者。
    • xxx .DSA。 与签名文件关联的签名块文件存储用于签名JAR文件的公共签名。

    jar工具

    要使用JAR文件执行基本任务,请使用Java开发工具包中随附的Java存档工具( jar工具)。 您可以使用jar命令调用jar工具。 表1显示了一些常见的应用程序:

    表1. jar工具的常用用法

    功能 命令
    从单个文件创建一个JAR文件 jar cf jar文件输入文件...
    从目录创建JAR文件 jar cf jar文件目录名
    创建未压缩的JAR文件 jar cf0 jar文件目录名
    更新一个JAR文件 jar uf jar文件输入文件...
    查看JAR文件的内容 jar tf jar文件
    提取JAR文件的内容 jar xf jar文件
    从JAR文件中提取特定文件 jar xf jar文件存档文件...
    运行打包为可执行JAR文件的应用程序 java -jar app.jar

    可执行JAR

    可执行jar文件是存储在经过特殊配置的JAR文件中的自包含Java应用程序,可以由JVM直接执行,而无需首先提取文件或设置类路径。 要运行存储在不可执行的JAR中的应用程序,必须将其添加到类路径中,并按名称调用该应用程序的主类。 但是,通过使用可执行的JAR文件,我们可以运行应用程序而无需将其解压缩或知道主入口点。 可执行JAR有助于Java应用程序的轻松分发和执行。

    创建可执行的JAR

    创建可执行的JAR很容易。 首先将所有应用程序代码放在一个目录中。 假设您应用程序中的主类是com.mycompany.myapp.Sample 。 您想要创建一个包含应用程序代码并标识主类的JAR文件。 为此,请在某处(不在您的应用程序目录中)创建一个名为manifest的文件,并在其中添加以下行:

    Main-Class: com.mycompany.myapp.Sample

    然后,像这样创建JAR文件:

    jar cmf manifest ExecutableJar.jar application-dir

    一切就足够了-现在可以使用java -jar执行JAR文件ExecutableJar.jar。

    可执行JAR必须通过清单文件的Class-Path标头引用其所需的所有其他依赖JAR。 如果使用-jar选项,则JVM将忽略环境变量CLASSPATH和命令行上指定的任何类路径。

    启动可执行JAR

    现在,我们已经将应用程序打包到一个名为ExecutableJar.jar的可执行JAR中,我们可以使用以下命令从文件直接启动该应用程序:

    java -jar ExecutableJar.jar

    包装封口

    将程序包密封在JAR文件中意味着必须在同一JAR文件中找到该程序包中定义的所有类。 这允许包作者在打包的类之间强制版本一致性。 密封还提供了一种检测代码篡改的安全措施。

    要密封软件包,请为该软件包添加一个Name标头,然后在JAR清单文件中添加一个值为“ true”的Sealed标头。 与可执行JAR一样,可以在创建JAR时通过使用适当的标头元素指定清单文件来密封JAR,如下所示:

    Name: com/samplePackage/
    Sealed: true

    Name标头标识软件包的相对路径名。 它以“ /”结尾,以区别于文件名。 Name标头之后的所有标头(中间无空白行)适用于Name标头中指定的文件或包。 在上面的示例中,由于Sealed标头出现在Name标头之后,中间没有空白行,因此Sealed标头将被解释为仅适用于com/samplePackage包。

    如果您尝试从密封包所在的JAR文件之外的其他来源加载密封包中的类,则JVM将抛出SecurityException

    扩展包装

    扩展将功能添加到Java平台,并且JAR文件格式内置了扩展机制。 扩展机制允许JAR文件通过清单文件中的Class-Path标头指定其他所需的JAR文件。

    假设extension1.jar和extension2.jar是同一目录中的两个JAR文件,其中extension1.jar的清单包含以下标头:

    Class-Path: extension2.jar

    该头文件指示extension2.jar中的类用作扩展类,以用于extension1.jar中的类。 extension1.jar中的类可以调用extension2.jar中的类,而无需extension2.jar成为类路径的一部分。

    当加载使用扩展机制的JAR时,JVM会有效地自动将Class-Path头中引用的JAR添加到类路径中。 但是,扩展JAR路径被解释为相对路径,因此通常,扩展JAR必须与引用它的JAR存储在同一目录中。

    例如,假设类ExtensionClient ,它引用类ExtensionDemo ,被称为ExtensionClient.jar一个JAR文件中捆绑,并且该类ExtensionDemo在ExtensionDemo.jar捆绑在一起。 为了将ExtensionDemo.jar视为扩展,必须在ExtensionClient.jar清单的Class-Path标头中列出ExtensionDemo.jar,如下所示:

    Manifest-Version: 1.0
    Class-Path: ExtensionDemo.jar

    此清单中的Class-Path标头的值为ExtensionDemo.jar(未指定路径),指示ExtensionDemo.jar与ExtensionClient JAR文件位于同一目录中。

    JAR文件中的安全性

    可以使用jarsigner工具或直接通过java.security API对JAR文件进行签名。 已签名的JAR文件与原始JAR文件完全相同,除了已更新其清单,并将两个附加文件添加到META-INF目录中,分别是签名文件和签名阻止文件。

    使用存储在密钥库数据库中的证书对JAR文件进行签名。 密钥库中存储的证书受密码保护,必须将其提供给jarsigner工具才能对JAR文件进行签名。

    图1.密钥库数据库
    密钥库数据库

    JAR的每个签名者都由签名文件表示,该文件在JAR文件的META-INF目录中具有扩展名.SF。 该文件的格式类似于清单文件-一组RFC-822标头。 如下所示,它由一个主要部分组成,该部分包括签名者提供的但并非特定于任何特定JAR文件条目的信息,其后是清单文件中也必须存在的各个条目的列表。 为了验证来自签名的JAR的文件,将签名文件中的摘要值与针对JAR文件中相应条目计算的摘要进行比较。

    清单1.已签名的JAR中的清单文件和签名文件
    Contents of signature file META-INF/MANIFEST.MF
    
    Manifest-Version: 1.0
    Created-By: 1.3.0 (Sun Microsystems Inc.)
    
    Name: Sample.java
    SHA1-Digest: 3+DdYW8INICtyG8ZarHlFxX0W6g=
    
    Name: Sample.class
    SHA1-Digest: YJ5yQHBZBJ3SsTNcHJFqUkfWEmI=
    
    Contents of signature file META-INF/JAMES.SF
    
    Signature-Version: 1.0
    SHA1-Digest-Manifest: HBstZOJBuuTJ6QMIdB90T8sjaOM=
    Created-By: 1.3.0 (Sun Microsystems Inc.)
    
    Name: Sample.java
    SHA1-Digest: qipMDrkurQcKwnyIlI3Jtrnia8Q=
    
    Name: Sample.class
    SHA1-Digest: pT2DYby8QXPcCzv2NwpLxd8p4G4=

    数字签名

    数字签名是.SF签名文件的签名版本。 数字签名文件是二进制文件,与.SF文件具有相同的文件名,但具有不同的扩展名。 扩展名取决于数字签名的类型(RSA,DSA或PGP)以及用于签名JAR的证书的类型。

    密钥库

    要签名JAR文件,首先必须具有一个私钥。 私钥及其关联的公钥证书存储在称为keystores的受密码保护的数据库中。 JDK包含用于创建和修改密钥库的工具。 密钥库中的每个密钥都可以由别名标识,别名通常是拥有密钥的签名者的名字。

    使用唯一的别名访问所有密钥库条目(密钥和可信证书条目)。 使用keytool -genkey命令将实体添加到密钥库中以生成密钥对(公钥和私钥)时,将指定别名。 后续的keytool命令必须使用相同的别名来引用实体。

    例如,要生成别名为“ james”的新公钥/私钥对并将公钥包装为自签名证书,则可以使用以下命令:

    keytool -genkey -alias james -keypass jamespass 
            -validity 80 -keystore jamesKeyStore 
            -storepass jamesKeyStorePass

    此命令序列指定后续命令访问密钥库“ jamesKeyStore”中与别名“ james”相关联的私钥所需的初始密码“ jamespass”。 如果密钥库“ jamesKeyStore”不存在, keytool将自动创建它。

    jarsigner工具

    jarsigner工具使用密钥库来生成或验证JAR文件的数字签名。

    假设您已经按照上面的示例创建了密钥库“ jamesKeyStore”,并且其中包含一个别名为“ james”的密钥,则可以使用以下命令对JAR文件进行签名:

    jarsigner -keystore jamesKeyStore -storepass jamesKeyStorePass 
              -keypass jamespass -signedjar SSample.jar Sample.jar james

    该命令从名为“ jamesKeyStore”的密钥库中使用密码“ jamesKeyStorePass”获取别名为“ james”且密码为“ jamespass”的密钥,并对Sample.jar文件进行签名,从而创建一个签名的JAR SSample.jar。

    jarsigner工具还可以验证已签名的JAR文件。 此操作比对JAR文件进行签名要简单得多。 只需执行以下命令:

    jarsigner -verify SSample.jar

    如果未篡改已签名的JAR文件,则jarsigner工具将告知您JAR已通过验证; 否则,它将抛出SecurityException指示无法验证哪些文件。

    还可以使用java.util.jarjava.security API以编程方式对JAR进行签名。 另外,您可以使用诸如Netscape Object Signing Tool之类的工具。

    您还可以使用java.util.jarjava.security API以编程方式对JAR进行签名。 (请参阅相关主题的详细信息)。 或者,您可以使用诸如Netscape对象签名工具之类的工具。

    JAR索引

    如果将应用程序或小程序捆绑到多个JAR文件中,则类加载器将使用简单的线性搜索算法来搜索类路径的每个元素,这可能需要类加载器下载并打开许多JAR文件,直到找到类或资源为止。 如果类加载器尝试查找不存在的资源,则必须下载应用程序或小程序中的所有JAR文件。 对于大型网络应用程序和小程序,这可能会导致启动缓慢,响应缓慢以及网络带宽浪费。

    从JDK 1.3开始,JAR文件格式已支持索引,以优化在网络应用程序(尤其是小应用程序)中搜索类的过程。 JarIndex机制收集在applet或应用程序中定义的所有JAR文件的内容,并将该信息存储在第一个JAR文件的索引文件中。 在下载第一个JAR文件之后,小应用程序类加载器将使用收集的内容信息来有效下载JAR文件。 此目录信息存储在根JAR文件的META-INF目录中名为INDEX.LIST的简单文本文件中。

    创建一个JarIndex

    您可以通过在jar命令中指定-i选项来创建JarIndex。 假设我们有一个目录结构,如下图所示:

    图2. JarIndex
    JarIndex演示

    您将使用以下命令为JarIndex_Main.jar,JarIndex_test.jar和JarIndex_test1.jar创建索引文件:

    jar -i JarIndex_Main.jar JarIndex_test.jar SampleDir/JarIndex_test1.jar

    INDEX.LIST文件具有简单的格式,其中包含每个索引的JAR文件中包含的包或类的名称,如清单2所示:

    清单2. JarIndex INDEX.LIST文件示例
    JarIndex-Version: 1.0
    
    JarIndex_Main.jar
    sp
    
    JarIndex_test.jar
    Sample
    
    SampleDir/JarIndex_test1.jar
    org
    org/apache
    org/apache/xerces
    org/apache/xerces/framework
    org/apache/xerces/framework/xml4j

    摘要

    JAR格式不仅仅是存档格式。 它具有许多功能,可以提高Java应用程序的效率,安全性和组织性。 由于这些功能内置于核心平台(包括编译器和类加载器)中,因此开发人员可以利用JAR文件格式的功能来简化和改进其开发和部署过程。


    翻译自: https://www.ibm.com/developerworks/java/library/j-jar/index.html

    展开全文
  • 运行 jar 文件_如何运行JAR文件

    千次阅读 2020-07-19 04:34:52
    运行jar文件Today we will learn how to run JAR File in java. In last tutorial we learned how to create jar file. Here we will learn how to run jar file from command line and some other aspects of using...

    运行 jar 文件

    Today we will learn how to run JAR File in java. In last tutorial we learned how to create jar file. Here we will learn how to run jar file from command line and some other aspects of using jar file.

    今天,我们将学习如何在Java中运行JAR文件。 在上一个教程中,我们学习了如何创建jar文件 。 在这里,我们将学习如何从命令行运行jar文件以及使用jar文件的其他方面。

    如何运行JAR文件 (How to run JAR File)

    We can run a jar file using java command but it requires Main-Class entry in jar manifest file.

    我们可以使用java命令运行jar文件,但需要jar清单文件中的Main-Class条目。

    Main-Class is the entry point of the jar and used by java command to execute the class. My project structure looks like below image.

    Main-Class是jar的入口点,由java命令用于执行该类。 我的项目结构如下图所示。

    I have to add manifest file in jar file, so I will create a manifest file with below details.

    我必须在jar文件中添加清单文件,因此我将使用以下详细信息创建清单文件。

    manifest.txt

    manifest.txt

    Main-Class: com.journaldev.util.MyUtil

    Now we will use jar command to create jar file with our manifest file data.

    现在,我们将使用jar命令使用清单文件数据创建jar文件。

    pankaj@JD:~/CODE/MyProject/bin$ jar cvfm MyProject.jar manifest.txt com
    added manifest
    adding: com/(in = 0) (out= 0)(stored 0%)
    adding: com/journaldev/(in = 0) (out= 0)(stored 0%)
    adding: com/journaldev/test/(in = 0) (out= 0)(stored 0%)
    adding: com/journaldev/test/MyTest.class(in = 444) (out= 303)(deflated 31%)
    adding: com/journaldev/util/(in = 0) (out= 0)(stored 0%)
    adding: com/journaldev/util/MyUtil.class(in = 444) (out= 304)(deflated 31%)

    Now when I unpack and check the contents of MANIFEST.MF file, it contains following data.

    现在,当我打开包装并检查MANIFEST.MF文件的内容时,它包含以下数据。

    Manifest-Version: 1.0
    Created-By: 1.6.0_37 (Apple Inc.)
    Main-Class: com.journaldev.util.MyUtil

    Manifest-Version and Created-By entries are added by jar command. Now we are ready to run jar file through command line.

    Manifest-Version和Created-By条目由jar命令添加。 现在,我们准备通过命令行运行jar文件。

    从命令行运行Jar文件 (Run Jar File from command line)

    pankaj@JD:~/CODE/MyProject/bin$ java -jar MyProject.jar 
    MyUtil main method

    So it’s executed MyUtil main method. That’s great when we have single class with main method.

    因此它执行了MyUtil main方法。 当我们只有一个带有main方法的类时,这很棒。

    What if my project has multiple entry points and I want to change the entry point without creating the jar again. So we can use the jar command to update the manifest file.

    如果我的项目有多个入口点,并且我想更改入口点而不再次创建jar,该怎么办。 因此,我们可以使用jar命令来更新清单文件。

    For updating a file using jar command, file structure should be similar otherwise it will add new file to another directory. Since manifest file is located at META-INF/MANIFEST.MF. We will rename the manifest.txt to MANIFEST.MF and put it inside META-INF directory. Then run the below command to update the entry point.

    要使用jar命令更新文件,文件结构应相似,否则它将新文件添加到另一个目录。 由于清单文件位于META-INF/MANIFEST.MF 。 我们将manifest.txt重命名为MANIFEST.MF,并将其放入META-INF目录中。 然后运行以下命令更新入口点。

    pankaj@JD:~/CODE/MyProject/bin$ jar uvfm MyProject.jar META-INF/MANIFEST.MF 
    Jan 30, 2013 5:40:27 PM java.util.jar.Attributes read
    WARNING: Duplicate name in Manifest: Main-Class.
    Ensure that the manifest does not have duplicate entries, and
    that blank lines separate individual sections in both your
    manifest and in the META-INF/MANIFEST.MF entry in the jar file.
    updated manifest

    Note that warning is because of duplicate entries and manifest file can have only one entry for each meta property, but it still updates the entry point by updating the manifest file. Now when you will run the jar, it will execute the changed entry class.

    请注意,警告是由于条目重复,清单文件的每个元属性只能有一个条目,但是它仍然通过更新清单文件来更新入口点。 现在,当您运行jar时,它将执行更改后的条目类。

    What if we don’t want to change the entry point but want to execute another class from jar file. It seems confusing but solution is real simple. All you need to do it add the jar to class path and then execute the class like a normal java class with main method.

    如果我们不想更改入口点,但想从jar文件执行另一个类,该怎么办。 似乎令人困惑,但解决方案确实很简单。 您所需要做的就是将jar添加到类路径,然后像使用main方法的普通java类一样执行该类。

    pankaj@JD:~/CODE/MyProject/bin$ java -cp MyProject.jar com.journaldev.util.MyUtil
    MyUtil main method

    That’s all for how to run jar file in java with single entry point, different entry points and without any entry point at all using java classpath.

    这就是如何使用Java类路径在具有单个入口点,不同入口点并且根本没有任何入口点的Java中运行jar文件的全部内容。

    Reference: Oracle Doc

    参考: Oracle文档

    翻译自: https://www.journaldev.com/1344/run-jar-file

    运行 jar 文件

    展开全文
  • Java程序打包成jar文件

    万次阅读 2017-12-18 23:17:08
    Java程序打包jar文件(jar命令形式)  先打开命令提示符,输入jar,然后回车(如果你已经配置好了java环境),可以看到:  用法:jar{ctxu}[vfm0Mi] [jar-文件] [manifest-文件][-C 目录] 文件名...  选项:  ...

    Java程序打包jar文件(jar命令形式)

            先打开命令提示符,输入jar,然后回车(如果你已经配置好了java环境),可以看到:

            用法:jar{ctxu}[vfm0Mi] [jar-文件] [manifest-文件][-C 目录] 文件名...

            选项:

            -c创建新的存档

            -t列出存档内容的列表

            -x展开存档中的命名的(或所有的)文件

            -u更新已存在的存档

            -v生成详细输出到标准输出上

            -f指定存档文件名

            -m包含来自标明文件的标明信息

            -0只存储方式;未用zip压缩格式

            -M不产生所有项的清单(manifest)文件

            -i为指定的jar文件产生索引信息

            -C改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。清单(manifest)文件名和存档文件名都需要被指定,按'm'和 'f'标志指定的相同顺序。


            示例1:将两个class文件存档到一个名为'classes.jar' 的存档文件中:

            jarcvf classes.jar Foo.class Bar.class

            示例2:用一个存在的清单(manifest)文件'mymanifest' 将 foo/ 目录下的所有文件存档到一个名为'classes.jar' 的存档文件中:

            jarcvfm classes.jar mymanifest -C foo/.

            来个小例子试试看:我们只有一个HelloWorld,如下:

            publicclass HelloWorld {

                    public static void main(String[ ] args) {

                            System.out.println(“Hi, Hello World!”);

                    }

            }

            将这个java文件存到C盘根目录下,ok,接下来,在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javacHelloWorld.java,然后继续输入:jar cvf  hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错hello.jar。

     

            紧接着我们看看如何运行我们的jar包。

            在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:

            Manifest-Version:1.0

            Created-By:1.4.2 (Sun Microsystems Inc.)

            就是这样。这里我们对它进行修改,加一句:Main-Class:HelloWorld (在第三行)。这个就是我们之前写的那个类,也就是我们的入口类。也即:

            Manifest-Version:1.0

            Created-By:1.4.2 (Sun Microsystems Inc.)

            Main-Class:HelloWorld

       接下来,我们在命令提示符里执行:

       jar    umf   MANIFEST.MF   hello.jar

            这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。你不妨可以再进去看看是不是添上了Main-Class:HelloWorld这一句。

     

            Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:

            java-jar hello.jar(执行)

            出现了什么,Hi, Hello World!

     

            我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:

            先准备我们要打包的资源。

            找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新建classes文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文件web.xml。Ok,目前我们初步建立了一个简单的web应用。

       这是HelloWorld.java:

       importjava.io.*;

       importjavax.servlet.*;

       importjavax.servlet.http.*;

       publicclass HelloWorld extends HttpServlet {

                    public void doGet(HttpServletRequest req,HttpServletResponse res)

                    throws ServletException, IOException {

                            res.setContentType("text/html");

                       PrintWriter out = res.getWriter();

                            out.println("");

                            out.println("");

                            out.println("");

                            out.println("Hello, World!");

                            out.println("");

                    }

            }//end here!

     

       对它编译。下面是web.xml:

       <?xmlversion="1.0" encoding="UTF-8"?>

       <!DOCTYPEweb-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

       <web-app>

           <servlet>

              <servlet-name>hello</servlet-name>

              <servlet-class>HelloWorld</servlet-class>

          </servlet>

          <servlet-mapping>

              <servlet-name>hello</servlet-name>

              <url-pattern>/HelloWorld</url-pattern>

          </servlet-mapping>

       </web-app>

            在命令提示符下进到先前创制的hello目录下,执行jar cvf hello.war * ,我们便得到hello.war。将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:

            <Contextpath="/hello" docBase="hello.war" debug="0"reloadable="true"/>

            大功告成!运行它,启动tomcat,后在浏览器中输入http://localhost:8080/hello/HelloWorld。

     


    Java程序打包jar文件(Eclipse自带Export)

            使用eclipse开发工具,可以将java程序直接导出成jar程序文件,eclipse的export功能。

            1、选中需要打包的程序,鼠标右键:

            2、选择导出类型为jar文件:


            3、选择需要打包的文件,并不需要将所有的文件都打包,这样可以减小jar文件的大小。并且可以选择导出jar包的一些信息,其解释如下:

            *Export generated class files and resources 表示只导出生成的.class文件和其他资源文件;

            *Export all output folders for checked projects 表示导出选中项目的所有文件夹;

            *Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了;

            *Export refactorings for checked projects 把一些重构的信息文件也包含进去。

            这里需要对MANIFEST.MF进行说明,这是打包的主清单文件,每个项目打包之后都会生成一个META-INF目录,里面还有一个MANIFEST.MF文件。eclipse中如果打包的程序没有引用第三方jar文件,则可以使用默认配置生成(当然你还是可以自己写,并说明程序执行的入口文件,若有的话)若项目使用了第三方jar包,则需要自己编写MANIFEST.MF文件:

            Manifest-Version: 1.0

            Class-Path: lib/mysql-connector-java-5.1.6-bin.jar

            Main-Class: com.zxt.sqlhelper.SqlHelperTest

            第一行是MAINIFEST的版本,第二行Class-Path就指定了外来jar包的位置,第三行指定我们要执行的MAINjava文件。

    还需注意一下一些问题:

            1)、Class-Path: Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field

            (2)、假设我们的项目打包后为Hello.jar,那么按照上面的定义,应该在 Hello.jar的同层目录下建立一个lib文件夹(即lib文件和打包的jar文件在同一个目录下),并将相关的jar包放在里面。否则将会出现“Exceptionin thread "main" java.lang.NoClassDefFoundError”的错误;

            3、Main-Class后面是类的全地址,比如你的主文件是Hello.java,文件里打包为packagecom.main; 那么这里就写com.main.Hello,不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;        

            4、写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行,否则将会出现“jar中没有主清单属性”的错误。


            4、选择配置文件:


            这里解释一下配置项:

            *Generate the manifest file:是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。

            *Use existing mainfest from workspace:这是可以选择我们自定义的.MF文件,格式如上所写,引用了第三方包时选用。

            *Seal content:要封装整个jar或者指定的包packet。

            *Main class:这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。


            5、最后Finish,即生成了我们要的jar文件。

     


    Java程序打包jar文件(Eclipse安装插件FatJar)

            Eclipse自带export对于含有较多第三方jar文件或含有第三方图片资源等就显得不合适,太繁琐。这时可以使用一个打包的插件—FatJar。

            FatJar Eclipse Plug-In是一个可以将Eclipse Java Project的所有资源打包进一个可执行jar文件的小工具,可以方便的完成各种打包任务,我们经常会来打jar包,但是eclipse自带的打包jar似乎不太够用,FatJar是eclipse的一个插件,特别是Fat Jar可以打成可执行Jar包,并且在图片等其他资源、引用外包方面使用起来更方便。


            安装方法:

            1、Eclipse在线更新方法:Help> Install New Software > Add,

            name:FatJar

            location:http://kurucz-grafika.de/fatjar

            2、Eclipse插件手动安装方法:首先先下载fatjar的安装包,将解压出的plugins中的文件复制到eclipse安装目录中的plugins目录下,然后重启eclipse即可。

     

            使用方法:

            步骤一:右击工程项目选择BuileFat Jar

            步骤二:配置jar文件存放目录,主Main文件等,如下图:

            步骤三:选择所要用到的第三方jar包。

    展开全文
  • jar文件怎么打开 查看jar文件内容操作方法 jar文件是java项目生成的一个小的文件项目,也可以描述为一个java压缩包,里面封装了,许多java类以及方法,变量。很多用户想要查看jar文件内容,可是却不知道jar文件...
  • 问题描述 环境变量都配置好了,也不知道为啥会这样,点击jar文件启动后只有一个黑框闪过 解决方法 1、首先你cmd运行java命令无异常,,,...2、在cmd中输入java -jar,再把jar文件拖进cmd框,回车运行 java -jar ...
  • jarFile读取jar文件内容

    千次阅读 2017-08-03 13:46:11
    JAR文件是打包基于JAVA技术的解决方案的标准方法。它允许开发者将所有相关内容(.class、图片、声音、及所有支持的文件)打包到一个文件中。JAR格式支持压缩、认证、版本号及其他很多特性。   如果你对于常用的...
  • sqljdbc4.jar包 驱动程序jar文件

    热门讨论 2012-03-15 13:17:26
    Sql Server jdbc 4.0 jar
  • 打开jar文件方法

    千次阅读 2019-06-19 18:36:27
    电脑能够打开jar文件的前提是安装了jdk jdk安装好后,一般可以直接双击打开jdk文件; 如果不行,可以使用命令行,步骤如下: 1.同时按win+R,输入cmd,打开命令框 2.跳转到要打开的jar文件目录下,然后输入java -jar ...
  • Mac 终端运行jar文件

    千次阅读 2020-06-17 10:32:53
    1、进入jar文件所在位置 2、命令运行jar文件 java -jar xxx.jar
  • 2种方式打开jar文件

    万次阅读 2019-12-02 11:10:51
    1.桌面操作(要先安装JDK/JRE) 对 “.jar”文件右击: ...我试过上述方法去打开我的jar文件,但没用,暂时没用找到原因,于是用命令打开 1.先检查Java是否正常安装,输入java -version即可 2.用命令+ 目录地址的...
  • 本地运行jar文件

    万次阅读 2018-03-28 16:31:30
    之前的博客已经讲解过如何通过IDEA导出可运行的jar包以及出现问题的解决办法,这么这里讲解如何运行jar首先去切换到可运行jar的目录,通过java -jar 你要运行的jar文件名下面是例子...
  • jar文件打不开解决的办法

    千次阅读 2019-11-05 08:06:00
    第一种方法: ...看了我网上的修改注册表的方式也无法执行。 查到下面的方法: 桌面下新建一个批处理文件:runjar.bat 然后拷贝下面的代码到runjar.bat文件 ...如图所示:我这里是一个可执行的jar文件 第一步:...
  • windows解压jar文件

    千次阅读 2020-03-09 11:13:42
    1.打开cmd 2.找到你本机放jdk的位置,然后...5.拷贝下来jar文件路径和文件名,在cmd中运行 jar -xvf +(存放jar文件的路径和文件名),回车便可解压到放jdk的bin目录下 红框框起来的就是解压好的文件 大功告成~ ...
  • java环境配好后jar文件打开闪退,无打开方式,无反应 结合burp问题 可用命令行直接输入 找到对应的文件目录,win+r cmd进入命令行,再输入java -jar +burp的名字 (我这是burpsuite_pro_v2.1.05.jar),如果没有...
  • 解决jar文件不显示图标问题

    千次阅读 多人点赞 2020-03-07 13:28:34
    最近,重新装了JDK,配置了环境变量,发现电脑里所有的jar文件的java咖啡图标都没了,感觉有点异样。 如果你要配置环境变量,可参考JDK安装与配置 二.解决问题 1.选中mysql-connector-java-5.1.7-bin.jar文件,右击...
  • Linux命令———zip和jar文件压缩解压

    千次阅读 2018-12-28 21:43:26
    Linux命令———zip和jar文件压缩解压 (1)ubuntu 使用unzip和zip压缩文件  1.功能作用:解压缩zip文件  2.位置:/usr/bin/unzip  3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist]...
  • 教你怎么直接打开jar文件运行

    千次阅读 2020-07-15 18:48:55
    像这种jar文件有的电脑可以直接双击打开就出现界面,但是有的就不行 接下来就教你吧 首先在这个文件的当前位置打开cmd 然后输入java -version,查看一下有没有安装java,出现版本就说明有安装 然后输入“java -jar...
  • mac(7) : 终端解压jar文件

    千次阅读 2019-10-21 14:28:31
    https://blog.csdn.net/zhujianlin1990/article/details/101307068
  • bat 简介 批处理文件,在 DOS 和 Windows系统中,.bat 文件是可执行文件,由一系列...使用 bat(批处理文件)运行可执行 jar 文件 我打算运行图中的可执行 jar 文件: 如果每次都在命令行输入 java -jar Bookmark-1...
  • mac解压jar文件

    万次阅读 2019-09-24 19:22:33
    jar文件>-C <目标目录> -z:有gzip属性的,可选 -x:解压,必须 -v:显示所有过程,可选 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接jar名,必须 -C:指定目标目录,必须预先存在...
  • Windows下打开.jar文件的方式

    千次阅读 多人点赞 2019-08-05 10:19:45
    目录 修改打开方式 修改注册表 //////////////////华丽的分割线/////////////// 一、修改打开方式 首先声明,我的电脑上已经安装好了JDK,没有安装的小伙伴请...1、我电脑上的.jar文件显示压缩文件的图标,双...
  • 关于java配置成功,但是双击.jar文件无法打开程序 首先描述我的问题(解决问题前情况如下): **此时可以看出 我的java 环境变量 都配置没有问题 ** 之后我运行一个.jar文件会报错 如下错误: 然后在大佬的里面...
  • 便捷操作:bat文件jar在同一目录 start.bat文件内容: @echo off start cmd /c "title exam1:8084 && java -jar exam.jar --server.port=8084" start cmd /c "title exam2:8085 &&...
  • 上一篇博文提到了,如何将一个apk转成jar文件,虽然jar文件我们可以使用jd-gui进行查看,但是保存成java文件的时候不是很方便,肯自己不会操作的缘故,这里还是使用一个jar包进行解决,这个工具包就叫做CFR ...
  • Java项目打包成jar文件的两种方法

    千次阅读 2019-07-04 10:43:18
    由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-ht...
  • bat文件启动jar文件

    千次阅读 2018-03-15 14:14:05
    把bat文件放在和jar文件的同一个目录下com.hikvision.ga.ArtemisTest是主类函数 自己把文件名和主类替换掉就可以了然后就可以运行
  • 问题:直接运行jar文件,系统没有反应。 问题分析: 我比较好奇为什么安装了Java就可以直接运行.jar文件。 https://blog.csdn.net/walkingmanc/article/details/6369487 “一般在安装jre (Java Runtime ...
  • Windows下使用cmd运行jar文件

    千次阅读 2019-06-26 17:32:00
    一般window系统下是不能直接运行jar文件的。(有些电脑可以,记得我以前的电脑是双击jar就可以运行的) 那么如何在windows下运行jar呢? 1.首先,电脑必须配置java运行环境jre--安装有jdk就行了2.进入cmd窗口,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,093,413
精华内容 437,365
关键字:

jar文件