URLClassLoader加载本地上传jar和其相关依赖库,调用jar时提示找不到依赖库中class

zerochen 发布于 2013/02/03 17:17
阅读 687
收藏 0

我有个web应用,需要实现一个功能,通过页面上传一个 自己写的jar包和jar依赖的里边库到我本地的任意目录(如:d:\upload\test.jar和d:\upload\lib\...),然后我的web应用中通过urlclassload加载这个jar中的class执行他的方法,但是提示jar依赖的的lib库找不到? 是因为我上传的jar和其依赖的lib不是在classpath中吗?应该吧上传的jar和lib放在什么路径下 通过反射加载jar执行jar中class的方法那?

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError:
加载中
0
純白陰影
純白陰影
classloader不同,所以找不到,研究下class加载吧
蛐蛐来开源
回复 @zerochen : 您好 请问一下您之前提问的 web下面的jar包和lib jar 解决了吗 有demo 可以参考一下吗 谢谢大神 如果有的话 能发到我的油箱吗 51426082@qq.com
zerochen
zerochen
OK 谢谢
0
x
xiaofeng83
你的问题解决了吗
0
r
runrunsnail

这是三年前的? - -!!! 

有人问就回答下吧。。。仅供参考,能关掉就更好了。

jar可随意放置,urlclassloader两种使用方法。

1. 把用到的所有jar文件包括jre都扔进去,作为一个独立加载器,可以加载任何已被包含的class(关联的jar也应该被引入)

2.有个基础环境,已经包含了jre和一些基础jar文件,比方说正在运行的A对象,这时,如果需要额外的加载,把想要额外加载的jar扔到urlclassloader里,然后(这个很重要),设定它的第二个参数(classloader,应该有。。。)为本环境的classloader(貌似这么写:this.getclass().getClassloader,就是A的classloader,差不多这个样子。。。)。然后这个urlclassloader就是个完整的关联环境了。可随意加载任何基础环境的class和额外追加的class。

希望有所帮助。

返回顶部
顶部