Java中URLClassLoader无法加载类的问题求助
问题根源
你的Equity类声明属于ubl4nk包,但编译和打包过程未生成正确的目录结构:
- 编译时直接将
Equity.class生成在当前目录,未创建ubl4nk子目录 - 打包时仅把当前目录下的
Equity.class放入jar,导致jar内没有ubl4nk/Equity.class的层级结构,URLClassLoader无法通过全限定名ubl4nk.Equity找到目标类
解决步骤
重新编译,生成正确包目录结构
使用javac的-d参数指定输出目录,它会自动根据包名创建对应目录层级:javac -d . -classpath lib1.jar;lib2.jar Equity.java执行后,当前目录会生成
ubl4nk文件夹,内部存放Equity.class。重新打包,包含完整目录结构
打包时需将ubl4nk目录整体打包,而非单独的.class文件:jar -cf myjar.jar ubl4nk验证jar结构(可选)
用以下命令查看jar内文件结构,确认存在ubl4nk/Equity.class:jar tf myjar.jar修正代码路径转义问题(若存在)
Java字符串中反斜杠需转义(单个\是转义符,必须写成\\),否则会导致路径解析错误:URL[] urls = new URL[]{ new File("C:\\Users\\FX506HC\\Desktop\\mtest\\lib1.jar").toURI().toURL(), new File("C:\\Users\\FX506HC\\Desktop\\mtest\\lib2.jar").toURI().toURL(), new File("C:\\Users\\FX506HC\\Desktop\\mtest\\myjar.jar").toURI().toURL() };
完成以上步骤后,URLClassLoader即可正确加载ubl4nk.Equity类。
内容的提问来源于stack exchange,提问作者Unknown BL4NK
相关产品推荐
相关产品推荐

