怎么在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中的某个类,该怎么设置或者加什么代码?
最好详细点,本人小白
web_inf/lib这个路径在哪里?项目文件下没有啊。
追答一定要搞成“奶瓶”哦,不然仅仅导进去,是没有用滴!
哎?您这个建的是Web Porject啊...我用的是Java Project没这个文件夹怎么办?
追答晕你啊,什么都不会~
你自己随便建一个文件夹目录,然后把jar包放进去。将jar包选中,右键build path -->Add to build path。
比如你的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包中的类?的主要内容,如果未能解决你的问题,请参考以下文章
java 加载的不同的jar包中有相同的类名怎么办调用到自己需要的类