`

jar运行时引用其他jar包的方法[转]

    博客分类:
  • Java
阅读更多

转自http://www.iteye.com/topic/332580.     2009-02-13

 

大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口。

 

具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。

 

比如有个叫做test.jar的jar包,里面有一个拥有main函数的main class:test.someClassName

我们就只要在MANIFEST.MF里面添加如下一句话:

Main-Class: test.someClassName

 

 然后我们可以在控制台里输入java -jar  test.jar即可以运行这个jar。

 

但是我们这个项目需要引用其他第三方的jar包,在eclipse里面以项目jar包的形式引用了这个叫做some.jar的包,当时放在项目的 lib子目录下,最后项目打包时把这个some.jar也打进来了,但是用java -jar执行这个test.jar的时候报找不到Class异常,原因就是jar引用不到放在自己内部的jar包。

 

那怎么办?

 

运行时将其加入classpath的方式行不行?就是在运行jar的同时加入classpath参数:

java -classpath some.jar  -jar test.jar

 

这种方式应该能解决问题吧,试一下,还是不行。

查了下资料,原来使用java -jar 命令运行jar包时classpath参数将会失效,所以,这种方式也不行。

 

那该怎么引用其他的jar包呢,答案还是在这个目录META-INF下的MANIFEST.MF文件中。jar包引用其他jar包的信息必须在这个文件中声明。

 

我们在MANIFEST.MF中添加如下代码:

Class-Path: lib/some.jar

 

lib是和test.jar同目录的一个子目录,test.jar要引用的some.jar包就在这里面。

然后测试运行,一切正常!

 

如果有多个jar包需要引用的情况:

Class-Path: lib/some.jar lib/some2.jar

每个单独的jar用空格隔开就可以了。

 

 

 

总结:不管怎么样,只要想办法在执行test.jar之前把需要引用的jar导入classpath就可以。你甚至可以把需要引用的包都放到jre/lib/ext目录下,这样jvm一启动,这些包就加载了。

分享到:
评论
1 楼 wonderlandsh 2011-12-12  

相关推荐

    windows运行jar包指定jdk路径

    windows运行jar包指定jdk路径的脚本文件。可以不用系统的jdk运行,指定某个文件下的jdk运行jar包

    关于执行java命令引入外部jar包方法

    关于执行java命令引入外部jar包方法

    Java 自动加载JAR文件并运行其中的类方法

    Java 自动加载JAR文件并运行其中的类方法

    kafka需要的jar包集合

    java开发kafka需要的jar包集合

    调用JAR包外的配置文件

    项目中,经常把一部分功能独立出来,做一个java project,然后打成jar包供其他项目引用。这时候,如果jar包中需要读取配置文件信息,则很少把该配置打进jar包,因为它不方便修改,更多都是采用jar包读取外部配置文件...

    uniAPPpush所需jar包.zip

    此压缩包包含uni APP push手机推送,服务端为java时调用demo。demo已经测试,手机可以接收到通知。

    MAVEN下载JAR包修复

    MAVEN下载JAR包时经常下载一半没有完成,如果项目中引用了这些JAR包项目就会无法启动,该工具就是可以扫描这些有问题的jar包并且删除,如果安装了JDK并配置环境变量直接双击运行即可

    SSH引用jar包

    ssh lib包,主要用于web开发中的ssh框架,具体为spring+struts+hibernate,所用的jdk需要是jdk1.7,否则会tomcat会报错。对了tomcat我的是tomcat 7,如果有什么问题可以给我留言,我会第一时间回复,本人在eclipse上...

    java开发常用jar包

    代码生成工具 Hibernate用它在运行时扩展 Java类和实现,同cglib包 slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 ...

    hadoop的外部依赖jar包

    有时候在eclipse上运行项目,需要引用的Hadoop的jar包,也就是hadoop的外部依赖包,有conf,fs,io,mapreduce等等,这里列举了一部分,基本上hadoop的所有外部依赖jar包都包含在内了,如果下载了不会使用,可以看我...

    springboot打包jar直接运行demo 动态指定jdk位置 sprongboot打包分享jar,静态文件,配件文件

    1)springboot打包可以分离引用架包的jar文件、静态文件、配件文件,使每次更新只更新最少的jar包 2)动态指定jdk位置,由于jdk版本不同,需要动态指定。 3)这是一个完整的springboot例子,全开源,放心下载 。

    junit 4.12 jar包

    用于写java测试单元的必须的jar包,junit4.12jar包,java导入jar即可引用标签, 注解,方法名为test开头 运行一次,static void @BeforeClass  @AfterClass  每次都运行 void @Before @After 测试 void @...

    android正确导入jar包

    后来找到原因是因为导入jar包的方式不对,正确的方法如下: 右键工程, Build path, java build path,选择libraries 在右边的按钮中点击“Add Library” 选择“User library”,点击“下一步” 点击“User ...

    java调用Matlab进行绘图的jar包

    使用该jar包需要注意几点: 1.正确地配置好环境变量,其中包括eclipse 中所用的jdk环境变量,以及matlab所用的环境变量; 2.未安装Matlab可以通过下载9.2版本的MCR进行安装Matlab的最小化运行环境; 更多内容,请...

    安装Nginx依赖jar包

    模块依赖性Nginx需要依赖下面3个包 1. gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ ) 2. rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ ) 3. ssl 功能需要 openssl 库 ( 下载: ...

    org.jacoco.agent-0.8.2-runtime.jar

    java运行依赖jar包

    mybatis-spring-boot-starter-1.3.1.jar

    java运行依赖jar包

    I-Jetty相关jar包

    I-Jetty从官网下载下来以后不能直接运行,需要自己添加相关的jar包引用;

    xfire所需的所有jar包与调用demo

    webservice的xfire框架所有需要jar包。测试应用demo,部署可直接运行

    axis2调用webservice接口jar包

    jar包版本axis2-1.7.6 代码可以直接运行。 jar包已经精简到最小了。不用引用那么多没用的jar包. 亲测可用。

Global site tag (gtag.js) - Google Analytics