java项目加载器_java-使用自定义类加载器加载资源包

博主遇到一个问题,在使用自定义的ClassLoader从jar文件加载类时,遇到了与MySQL Java驱动程序相关的ResourceBundle错误。具体是尝试加载LocalizeErrorMessages类时失败,因为它是ResourceBundle类型。问题在于如何通过自定义类加载器正确加载这类资源包。
摘要由CSDN通过智能技术生成

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.util.jar.JarEntry;

import java.util.jar.JarFile;

public class JarClassLoader extends ClassLoader {

private String path;

public JarClassLoader(String path) {

this.path = path;

}

@Override

public Class> loadClass(String name, boolean resolve) throws ClassNotFoundException

{

Class> c = findLoadedClass(name);

if (c == null) {

try {

c = findSystemClass(name);

} catch (Exception e) {

}

if (c != null)

return c;

try {

byte data[] = loadClassData(name);

c = defineClass(name, data, 0, data.length);

if (c == null)

throw new ClassNotFoundException(name);

if (resolve)

resolveClass(c);

} catch (Exception e) {

e.printStackTrace();

}

}

return c;

}

private byte[] loadClassData (String classEntry) throws IOException {

System.out.println(classEntry);

String filename = classEntry.replace('.', File.separatorChar) + ".class";

JarFile jar = new JarFile(path);

JarEntry entry = jar.getJarEntry(filename);

InputStream is = jar.getInputStream(entry);

int data;

ByteArrayOutputStream byteStream = new ByteArrayOutputStream();

while ((data = is.read()) != -1) {

byteStream.write(data);

}

return byteStream.toByteArray();

}

}

我有一个ClassLoader(上面已发布),可以将我需要的所有类文件从jar中加载出来.该文件还包含MySQL Java驱动程序文件,并且在尝试加载这些文件时,由于这是ResourceBundle,我在com.mysql.jdbc.LocalizedErrorMessages上收到错误消息.我的问题是如何使用自定义类加载器加载资源包?谢谢你的帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值