package com.coderising.jvm.loader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; public class ClassFileLoader { private List<String> clzPaths = new ArrayList<String>(); public byte[] readBinaryCode(String className) { className = className.replace(".", File.separator) + ".class"; for (String path : clzPaths) { String clzFileName = path + File.separator + className; byte[] codes = this.loadClassFile(clzFileName); if (codes != null) { return codes; } } return null; } private byte[] loadClassFile(String clzFileName){ try { return IOUtils.toByteArray(new FileInputStream(clzFileName)); } catch (IOException e) { e.printStackTrace(); } return null; } public void addClassPath(String path) { clzPaths.add(path); } public String getClassPath() { return StringUtils.join(clzPaths, ";"); } public String getClassPath_V1() { StringBuffer sb = new StringBuffer(); /* * for (int i = 0; i < clzPaths.size(); i++) { if (i == clzPaths.size() - 1) { sb.append(clzPaths.get(i)); break; } sb.append(clzPaths.get(i)); sb.append(";"); * * } */ for (int i = 0; i < clzPaths.size(); i++) { sb.append(clzPaths.get(i)); if (i < clzPaths.size() - 1) { sb.append(";"); } } return sb.toString(); } }