java中的jar文件

jar文件有两种:

  • 可以独立运行的(必须有main方法)
  • 供其他程序调用的(main方法可有可无)

MANIFEST.MF

MANIFEST.MF文件时jar文件中的清单文件,定义了与扩展和包相关的数据。 它有两个属性很重要

  1. Class-Path 应用程序或者类装载器使用该值来构建内部的类搜索路径
  2. Main-Class 定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。
注意:Class-Path指的是外部路径,而不是包内的路径。

[问题]MANIFEST.MF文件作用 注意:Class-Path 注意:MANIFEST.MF --- 有main方法才有用

[猜想]MANIFEST.MF只会在独立执行的jar文件中起作用,在被调用的jar文件中不起作用。一个运行的工程只能有一个MANIFEST.MF,所以当jar是被引入的方式来运行的,那么他的MANIFEST.MF无用。起作用的事宿主程序的MANIFEST.MF。

calsspath

java -classpath 1.jar;2.jar;3.jar;...;main.jar com.Main
  1. jar,2.jar,3.jar...都是main.jar需要的依赖。
  2. com.Main是main.jar的入口类,其中有main函数。

classpath与MANIFEST.MF文件中的Class-Path属性对应。如果MANIFEST.MF文件中的Class-Path没有设置,那么我们在运行jar文件时可以javar -classpath 1.jar;2.jar;3.jar;x.jar com.Main动态引入所需要的依赖。

jar与依赖

我们的工程往往会引入其他的jar包,这是导出为jar文件时,就要考虑jar与依赖的关系了,否则我们导出的jar无法独立运行或被其他程序调用。

方式 与依赖连接的方式
将工程和所有引入的jar文件打成一个jar包。 工程与依赖已经融合为一体,无需使用MANIFEST.MF文件的Class-Path或者-classpath命令。
只将工程代码编译打成jar,依赖单独引入。 使用MANIFEST.MF文件的Class-Path或者-classpath命令将引入的jar和工程连接起来

eclipse将工程导出为jar文件

eclipse中将工程导出为jar文件有三种方式

  • JAR file
  • javadoc
  • Rundable JAR file 导出一个可以运行的jar文件
1. 导出JAR file

2. 导出Rundable JAR file

注意: Launch configuration的格式为A-B ,B为工程名称,A为工程中包含有main函数的方法(一般你需要在eclipse当中运行一次main方法才回在这里显示。)。这个选项的作用是编译该工程所有文件,以A为入口类。

eclipse的导出向导只提供将工程导出为jar文件最经典的编译方案,如果你想自定义导出方式可以编写ant脚本,使用fatjar插件或者使用maven等等。

[问题]eclipse中导出JAR file和Runable JAR file有啥区别?

前者可以自定义JAR的各种编译方式,在某情况下可以用前者的导出方式来导出和后者一样的jar包。后者比较针对可以运行jar,方便快速导出可运行的jar。

[猜想]将我们需要的依赖包引入到java classpath环境变量中。是否可以解决外部引用问题?

results matching ""

    No results matching ""