没做过,但感觉要么在环境变量中改,要么在jdk的调用包里看有没有什么文件可以该,程序中应该不能实现,我认为后者的可能比较大。
关注,看有没有人做过
关注,看有没有人做过
解决方案 »
- 无法访问http://localhost:8080
- SSH 高手请进
- 求教····
- Strut2+hibernate3.3+Spring2.5老出现错误,请教高手!!急急?
- myeclipse用xfire开发webservice时请求和响应都有复杂类型
- J2EE web负载均衡设计思路讨论
- 关于一个sp(短信)接入项目的方案希望大家给点意见,最好是有做过这样的项目的人来说说~
- jb9+weblogic8.1开发CMP,在jb中配置数据源datasources时,看不到数据库中的表,这是怎么回事,急,回答立即给分。
- mybatis insert失败!!!
- 怎么理解hash原理?以hashmap为例?
- 简单问题,struts 里的org包应该放在那里啊
- jsp 2.0 不识别el语法 ,大家帮帮忙。
上面方法,我试过好像不成功。
请ChDw(米)再讲清点好吗?
import java.io.FileInputStream;public class MyClassLoader extends ClassLoader { public MyClassLoader(ClassLoader cl) {
super(cl);
}
public Class loadClass(String name) throws ClassNotFoundException {
System.out.println("Load:" + name);
if(name.startsWith("chdw")) {
try {
//Load 指定目录下面的Class文件
FileInputStream fis = new FileInputStream(name.replace('.','/') + ".class");
byte[] buf = new byte[fis.available()];
DataInputStream dis = new DataInputStream(fis);
dis.readFully(buf);
dis.close();
return super.defineClass(name,buf,0,buf.length,null);
} catch (Exception e) {
System.err.println("Exception:" + e.getMessage());
throw new ClassNotFoundException(name);
}
} else
return super.loadClass(name);
}
}//----------------------------------
package chdw;
public class Test { public static void main(String[] args) throws Exception{
System.out.println(Class.forName("chdw.Abc"));
}
}
//----------------------------
java -cp . -Djava.system.class.loader=chdw.MyClassLoader chdw.Test这样你的ClassLoader就可以加载你需要的类了,如果你不需要加载就调用父类的方法
import java.io.*;
import java.net.MalformedURLException;
import java.security.*;class MyClassLoader extends ClassLoader
{
private ClassLoader m_parent;
private ProtectionDomain pd; public MyClassLoader(ClassLoader parent, String basePath)
{
m_parent = parent;
try
{
CodeSource codeSource = new CodeSource( (new File(basePath)).toURL(), null);
Permissions permissions = new Permissions(); permissions.add(new AllPermission());
pd = new ProtectionDomain(codeSource, permissions);
}
catch (MalformedURLException ex)
{
ex.printStackTrace();
return;
}
} public synchronized Class loadClass(String className,
boolean resolveIt) throws ClassNotFoundException
{ Class result;
byte classData[]; // Check the loaded class cache
result = findLoadedClass(className);
if (result != null) {
// Return a cached class
return result;
} String fileName = className.replace('.', File.separatorChar) + ".class";
classData = JDownload.getFileBytes(fileName);
if (classData == null)
{
try
{
result = m_parent.loadClass(className);
return result;
}
catch (Exception e)
{
System.out.println("Class load failed:"+fileName);
}
}
result = defineClass(className, classData, 0, classData.length, pd); if (result == null) {
System.out.println("Class format error: " + className);
throw new ClassFormatError();
} if (resolveIt) {
resolveClass(result);
}
return result;
} public InputStream getResourceAsStream(String name)
{
System.out.println("getResource, name:"+name);
byte[] classData = JDownload.getFileBytes(name);
return classData != null ? new ByteArrayInputStream(classData) : null;
}
}
示意图如下:
1、JVM虚拟机<<----JVM类装载器<<----用户java 程序类
通过设置(当然是要编程设置实现,我希望的也是给出该程序的实例)达到如下:
2、JVM虚拟机<<----<<JVM类装载器<<----用户自定义的类装载器<<----用户java 程序类
<<----用户自定义的类装载器<<----用户java 程序类
意思为:用户自定义的类装载器如能正常完成类装载工作,当其装载完成后就交给JVM处理,否则就将其类装载工作交给JVM类装载器,处理完成再由其交给JVM
Load:java.lang.String
Load:chdw.Test
Load:java.lang.Object
Load:java.lang.Exception
Load:java.lang.System
Load:java.lang.Class
Load:chdw.Abc这样已经说明我已经使用MyClassLoader来加载我所有的类了,这个还不能满足你的需要吗?
你需要的是怎样的效果?