`
xiaolongfeixiang
  • 浏览: 234624 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

打包第3方jar

阅读更多

问题引出:

 

做JavaWeb时,只需将第三方的jar包,复制到服务器的指定目录,即可!例如:

 

Tomcat6.0.20 复制到 %Tomcat的解压目录%lib下 (这个Server公用的)

 

或者 项目的WEB-INF/lib目录下。

 

但是在做JavaSE应用时,第三方的jar包,应该如何放置呢?

 

解决方法:

 

1、可以在JavaSE应用的启动时候,设置classpath,使其包括第三方的jar包。

 

2、将第三方的jar包,于JavaSE打包在同一个jar中。(本文的目标)

 

方法详解:

 

 

情形假设(都在C:\Test下):

 

1、JavaSE应用已经打包成jar了(hello.jar)。

 

2、第三方的jar(lib/tool.jar)

 

 

STEP01: 建立一个文本文档。

 

这里建立一个my.mf(也可以是 XXX.txt)



 

 说明:第一行不需要,只是为了最后的演示方遍而加入的。

          Class-Path一定要加入

          末尾一定要有一个空行。(具体约定,见JavaTutorial中的Deployment一章)

 

STEP02: jar命令打包:

命令行:

jar -umf my.mf hello.jar lib

 

选项介绍:

 

-u 表示更新jar包。--  这里将lib目录放入jar中,当然需要此选项

 

-m 指示 Manifest.mf选项的来源。---  文本文件+符合约定即可

 

-f  新加入的文件 或者目录。 --- 这里将lib目录下的所有文件、子目录都加入。

 

注意顺序不要变。



 


测试一下(因为我设置了 Main-Class,所以可以直接运行):



附源码:

 

 

 Hello.jar中的test.HelloWorld

package test;

import com.yourcompany.ToolBean;

public class HelloWorld
{
  public static void main(String[] agrs)
  {
    ToolBean tool = new ToolBean();

    String str = tool.greet(" JavaEye");

    System.out.println(str);
  }
}

 

tool中的ToolBean

package com.yourcompany;

public class ToolBean
{
  public String greet(String name)
  {
    return "Hello , " + name;
  }
}
 

 

 

  • 大小: 3.2 KB
  • 大小: 3.7 KB
  • 大小: 1.1 KB
3
0
分享到:
评论
5 楼 xiaolongfeixiang 2010-11-29  
spring_xcy 写道
我运行   jar -umf my.mf *.jar lib后报这个错
java.io.IOException:invalid header field
at java.util.jar.Attributes.read(Attributes.java:393)
at java.util.jar.Manifest.read(Manifest.java:182)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.update(Main.java:529)
at sun.tools.jar.Main.run(Main.java:202)
at sun.tools.jar.Main.main(Main.java:1149)
这是怎么回事呢?谢谢了



是mf文件的格式有错误。注意mf文件最后要有一个空白行。
4 楼 spring_xcy 2010-11-29  
我运行   jar -umf my.mf *.jar lib后报这个错
java.io.IOException:invalid header field
at java.util.jar.Attributes.read(Attributes.java:393)
at java.util.jar.Manifest.read(Manifest.java:182)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.update(Main.java:529)
at sun.tools.jar.Main.run(Main.java:202)
at sun.tools.jar.Main.main(Main.java:1149)
这是怎么回事呢?谢谢了

3 楼 xiaolongfeixiang 2010-09-15  
xiao-qiang163 写道
写得非常好,支持你顶你一下,
虽然比较基础,但还是值得借鉴的。。。。


谢谢您的支持!
2 楼 xiao-qiang163 2010-09-15  
写得非常好,支持你顶你一下,
虽然比较基础,但还是值得借鉴的。。。。
1 楼 xiaolongfeixiang 2010-04-18  
不好意思,当时把图片删除了。补上来了!!

相关推荐

Global site tag (gtag.js) - Google Analytics