怎么在java项目中调自定义的jar包中的类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在java项目中调自定义的jar包中的类?相关的知识,希望对你有一定的参考价值。

在CMD模式下通过javac生成了5个.class文件,然后用jar命令将之前生成的5个.class文件打成了一个叫test.jar的包。这个5个class都很简单,分别是输出一段字符串。
我现在在Eclipse中有个简单的java项目,这个aaa里几乎没有代码,可以忽略。

请问,我现在想在这个aaa.java中调用,test.jar中的某个类,该怎么设置或者加什么代码?
最好详细点,本人小白

在java项目中调用自定义的jar包需要两个步骤。第一步,将需要使用的jar包导入到项目中,如果在导入的jar包前看到一个奶瓶装状的图标,那么代表可以正常使用该jar包了,第二步,在类中使用到自定义的jar包中的内容时,需要导入相关的包信息。一般在开发时,我们自定义的jar包大多数为工具包,即直接使用对象.方法的形式来使用jar包中的内容。 参考技术A 你是不是想引包,把test.jar包先放在web_inf/lib 这个路径下,然后buld path 搞成“奶瓶”。然后在aaa.java中 import test.XXX;追问

web_inf/lib这个路径在哪里?项目文件下没有啊。

追答

一定要搞成“奶瓶”哦,不然仅仅导进去,是没有用滴!

追问

哎?您这个建的是Web Porject啊...我用的是Java Project没这个文件夹怎么办?

追答

晕你啊,什么都不会~
你自己随便建一个文件夹目录,然后把jar包放进去。将jar包选中,右键build path -->Add to build path。

本回答被提问者采纳
参考技术B 先把你的包import进来。

比如你的jar包在a.b里面

就import a.b

这样就可以使用a.b里面的类和函数了追问

我要把jar包放在哪里呢?

Java项目中如何扩展第三方jar包中的类?

有些时候你对第三方得到jar包中的类并不是很满意,想根据实际情况做一些扩展。如果说第三方的jar包已经提供了一些可扩展的类,比如提供了Interceptor,Filter或者其他的类,那么使用原生的比较保险一些。但是如果说并没有提供这些,那就要走一些不寻常的路。这里我总结了一些可行的方法,有的优雅,有的则是不得已而为之的。

 

一、继承你想要扩展的类,重写想要扩展的方法

这种做法是比较好的,符合面向对象的思想。另外动作比较小,风险也不会很大。但是这种方法有个前提是,被扩展的类在扩展点能用这个子类去替换。比如说在Bean配置的过程中,可以用在需要这个类的地方用子类注入,而不是注入被扩展的类。就是说原来想要扩展的类都是直接new出来的,那么我们新写的子类根本就没法在需要扩展的地方使用。

二、直接复制一份想要扩展的类,在项目中创建同包同名的类

这种方法是我在网上看到的,这里利用了类加载的优先性,说的是WEB-INF目录下的类加载的优先级要比lib中jar包类的优先级要高。

三、使用ASM等字节码修改工具,直接修改这个类的字节码

这个是终极做法了,直接把这个类的字节码修改成你想要扩展的样子。思路相当直接,缺点就是你要对字节码非常熟悉,并且熟悉ASM这个工具。其次这种做法的风险比较大,如果你提出了这种想法,很有可能被pass掉。

 

其实这几种就是AOP要做的,AOP我接触的比较少,配置起来稍显麻烦;另外有时候不一定会给你配置。

 

总结:

技术分享图片

以上是关于怎么在java项目中调自定义的jar包中的类?的主要内容,如果未能解决你的问题,请参考以下文章

怎么引用jar包中的类

java 加载的不同的jar包中有相同的类名怎么办调用到自己需要的类

Java项目中如何扩展第三方jar包中的类?

java调用jar包中的类

java中,引用另一个包中的类做父类时,显示程序包不存在怎么办

android 导入第三方jar包,在程序中导入包中的类无效;