写道
package com.css.classLoader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class MyClassLoader extends ClassLoader {
public static void main(String[] args) throws Exception {
String srcPath= "E:\\projects\\mySpring\\bin\\com\\css\\classLoader\\ClassLoaderAttachment.class";
String descPath= "E:\\projects\\mySpring\\csslib\\ClassLoaderAttachment.class";
FileInputStream fis = new FileInputStream(srcPath);
FileOutputStream fos = new FileOutputStream(descPath);
cypher(fis, fos);
fis.close();
fos.close();
}
/**
* 对某个文件进行加密
* @param ips
* @param ops
* @throws Exception
*/
public static void cypher(InputStream ips,OutputStream ops) throws Exception{
int b =-1;
while ((b=ips.read()) != -1) {
ops.write(b ^ 0xff);
}
}
private String classDir;
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException{
String classFileName = classDir+"\\"+name.substring(name.lastIndexOf('.')+1)+".class";
try {
FileInputStream fis = new FileInputStream(classFileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
cypher(fis, bos);
fis.close();
System.out.println(classFileName);
byte[] bytes = bos.toByteArray();
return defineClass(bytes, 0, bytes.length);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public MyClassLoader(){
}
public MyClassLoader(String classDir){
this.classDir = classDir;
}
}
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class MyClassLoader extends ClassLoader {
public static void main(String[] args) throws Exception {
String srcPath= "E:\\projects\\mySpring\\bin\\com\\css\\classLoader\\ClassLoaderAttachment.class";
String descPath= "E:\\projects\\mySpring\\csslib\\ClassLoaderAttachment.class";
FileInputStream fis = new FileInputStream(srcPath);
FileOutputStream fos = new FileOutputStream(descPath);
cypher(fis, fos);
fis.close();
fos.close();
}
/**
* 对某个文件进行加密
* @param ips
* @param ops
* @throws Exception
*/
public static void cypher(InputStream ips,OutputStream ops) throws Exception{
int b =-1;
while ((b=ips.read()) != -1) {
ops.write(b ^ 0xff);
}
}
private String classDir;
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException{
String classFileName = classDir+"\\"+name.substring(name.lastIndexOf('.')+1)+".class";
try {
FileInputStream fis = new FileInputStream(classFileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
cypher(fis, bos);
fis.close();
System.out.println(classFileName);
byte[] bytes = bos.toByteArray();
return defineClass(bytes, 0, bytes.length);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public MyClassLoader(){
}
public MyClassLoader(String classDir){
this.classDir = classDir;
}
}