日期:2014-05-20  浏览次数:20693 次

JAVA 动态加载类 并运行
比如我有一个jar文件,里面有一个A类,
jar文件放在c:\下面

我在一个JAVA工程的B类中,要加载这个jar文件,并获取A类的实例和执行A的test()方法,该怎么实现,谢谢各位~
(前提不将这个jar包放在classpath)

------解决方案--------------------
请问,你为什么要这样做?
------解决方案--------------------
期待LZ早日解决 不用classpath
------解决方案--------------------
up
------解决方案--------------------
用classloader阿。
------解决方案--------------------
同意用classloader
------解决方案--------------------
java.net包中有一个URLClassLoader,可以载入.jar文件中的类。
------解决方案--------------------
up

------解决方案--------------------
手头有一断代码,不知能否帮你:
public static StringBuffer readPackageResource(String packageResource)
{
if (packageResource == null)
return null;
try
{
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream is = loader.getResourceAsStream(packageResource);
if (is == null)
{
loader = FileUtil.class.getClassLoader();
is = loader.getResourceAsStream(packageResource);
}
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
StringBuffer recordBuf = new StringBuffer();
String record = null;
while ((record = bf.readLine()) != null)
{
recordBuf.append(record + "\n ");
}
bf.close();
is.close();
return recordBuf;
}
catch (Exception ex)
{
CommonLog.debug( "readPackageResource(): " + ex.toString());
ex.printStackTrace();
}
return null;
}
------解决方案--------------------
XXXX.getClass().newInstance();
------解决方案--------------------
利用反射API
------解决方案--------------------
留名