package
com.cmw.example.one;
02
03
import
java.io.File;
04
java.io.FileInputStream;
05
java.io.FileNotFoundException;
06
java.io.IOException;
07
java.lang.reflect.InvocationTargetException;
08
java.lang.reflect.Method;
09
10
/**
11
* 文件加载类
12
* 可根据MyFileClassLoader 从文件中动态生成类
13
* @author chengmingwei
14
*
15
*/
16
public
class
MyFileClassLoader
extends
ClassLoader {
17
18
private
String classPath;
19
20
@SuppressWarnings
(
"unchecked"
)
21
static
void
main(String[] args)
throws
ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
22
MyFileClassLoader fileClsLoader =
new
MyFileClassLoader();
23
fileClsLoader.setClassPath(
"E:\\j2ee_proj\\skythink\\WebContent\\WEB-INF\\classes\\"
);
24
Class cls = fileClsLoader.loadClass(
"com.cmw.entity.sys.AccordionEntity"
25
Object obj = cls.newInstance();
26
Method[] mthds = cls.getMethods();
27
for
(Method mthd : mthds){
28
String methodName = mthd.getName();
29
System.out.println(
"mthd.name="
+methodName);
30
}
31
"obj.class="
+obj.getClass().getName());
32
+cls.getClassLoader().toString());
33
+cls.getClassLoader().getParent().toString());
34
35
36
37
* 根据类名字符串从指定的目录查找类,并返回类对象
38
39
@Override
40
protected
Class<?> findClass(String name)
ClassNotFoundException {
41
byte
[] classData =
null
;
42
try
{
43
classData = loadClassData(name);
44
catch
(IOException e) {
45
e.printStackTrace();
46
47
return
super
.defineClass(name, classData,
0
, classData.length);
48
49
50
51
* 根据类名字符串加载类 byte 数据流
52
* @param name 类名字符串 例如: com.cmw.entity.SysEntity
53
* @return 返回类文件 byte 流数据
54
* @throws IOException
55
56
[] loadClassData(String name)
IOException{
57
File file = getFile(name);
58
FileInputStream fis =
FileInputStream(file);
59
[] arrData =
[(
int
)file.length()];
60
fis.read(arrData);
61
arrData;
62
63
64
65
* 根据类名字符串返回一个 File 对象
66
* @param name 类名字符串
67
* @return File 对象
68
* @throws FileNotFoundException
69
70
File getFile(String name)
FileNotFoundException {
71
File dir =
File(classPath);
72
if
(!dir.exists())
throw
FileNotFoundException(classPath+
" 目录不存在!"
73
String _classPath = classPath.replaceAll(
"[\\\\]"
,
"/"
74
offset = _classPath.lastIndexOf(
75
name = name.replaceAll(
"[.]"
76
(offset != -
1
&& offset < _classPath.length()-
){
77
_classPath +=
78
79
_classPath += name +
".class"
80
dir =
File(_classPath);
81
FileNotFoundException(dir+
" 不存在!"
82
dir;
83
84
85
String getClassPath() {
86
classPath;
87
88
89
setClassPath(String classPath) {
90
this
.classPath = classPath;
91
92
93
94
您还没有登录,请您登录后再发表评论
易语言的语法规则允许程序员用中文字符编写代码,如使用“取时间戳”这样的命令来获取当前系统的时间戳。时间戳通常用于跟踪事件发生的时间,或者进行基于时间的计算。它表示的是从特定起点(如1970年1月1日)到当前...
在嵌入式系统开发中,分散加载文件(Scatter Loading File)是一种重要的编程技术,它允许程序员将程序的不同部分分配到内存的特定区域,以优化系统资源的利用和提高执行效率。本文将深入探讨分散加载文件的概念、...
6. **修改build配置文件**:为了将自编译的.so库添加到QNX系统,你需要更新构建脚本或Makefile,确保链接器知道新的库位置,并且在运行时能够找到它。可能需要设置-L参数指定库路径,-l参数指定库名。 7. **部署到...
8. **错误处理**:需要注意的是,动态加载DLL需要处理可能出现的找不到文件、版本冲突等错误,因此在编写代码时要加入适当的异常处理。 9. **搜索路径**:在运行时加载DLL时,系统会按照一定的顺序查找DLL。了解这...
#### 三、ARM映像文件加载运行的应用情况 1. **在没有地址重映射的ARM应用系统中的加载运行情况**: - 在这类系统中,由于地址和空间大小固定,映像文件的加载和运行地址通常是相同的。因此,在编写程序时,需要...
源代码的转换、加载与运行是编程过程中至关重要的环节,涉及到计算机如何理解并执行程序员编写的高级语言代码。本文将详细解析这个过程,从源代码的预处理开始,经过编译、汇编和链接,最终形成可执行程序,并讨论其...
内存加载exe技术的核心在于将一个完整的可执行文件(.exe)直接读取到计算机的内存中,并从内存中执行程序,而不是传统的从磁盘加载到内存再执行的方式。这种方法能够在某些场景下提供更快、更安全、更灵活的程序...
当您拥有一个TLB文件时,可能是因为您需要创建一个新的COM组件,或者您从某个第三方软件中获取了这个文件,现在需要将其注册到系统中。 在提供的压缩包中,有以下几个文件: 1. **TypeLib.bas**:这是一个Visual ...
`rootfs_xk.tar` 文件很可能是一个编译完成的Android根文件系统的tar归档,用于解压到特定的系统分区,以便在目标设备上运行。当开发者进行自定义系统开发或者驱动开发时,他们可能需要修改或替换这个根文件系统,以...
在压缩包中的"DriverLoader"文件可能包含以下几个部分:解决方案文件(.sln)、C#源代码文件(.cs)、配置文件(.config)、资源文件(如图标、字符串资源等)以及可能的测试项目或示例代码。 总的来说,这个"C#写...
4. **加载文件系统**:将生成的映像文件加载到ramdisk中,并设置为根文件系统。 #### 4.2 使用NFS文件系统进行基本应用程序开发 除了ramdisk,还可以使用NFS(Network File System)作为根文件系统。NFS允许远程...
标题中的“dotnet-一个JScript文件的工具用于创建从内存中加载NETv2程序集”指的是一个基于JScript编写的工具,该工具能够帮助开发者在.NET Framework v2环境中动态地从内存中加载程序集。这在某些场景下非常有用,...
MiniJVMMiniJVM是一款使用python编写的简易JVM,能够从本地加载class文件并且执行绝大多数指令。支持的功能1.从本地磁盘加载class并解析2.支持绝大多数指令集的执行3.支持虚拟机内存分区以及对象的创建4.支持方法的...
1. **回调函数**:当js文件加载完成时,可以调用一个预先定义的回调函数,确保后续操作在加载完成后执行。例如,使用`fetch`API时,可以监听`then()`和`catch()`中的结果。 2. **Promise**:使用Promise可以优雅地...
这个shellcode加载器的组合可能是一个用于渗透测试或研究目的的工具,使用者可以通过Python脚本加载和执行加密过的shellcode,并且可以与Cobalt Strike和Metasploit Framework兼容,提高了在目标系统上执行代码的...
通过定制分散加载文件,我们可以控制程序代码、数据和堆栈等在目标硬件内存中的布局,确保程序运行时的效率和稳定性。在ARM7这样的嵌入式平台上,内存资源有限,因此合理分配内存空间显得尤为关键。 在编写...
ELF文件病毒是一种针对Linux系统的恶意软件,它利用了ELF(Executable and Linkable Format)文件格式的特性来嵌入自身的代码到合法的可执行文件中。本文将深入探讨ELF文件格式以及如何分析和编写ELF病毒。 首先,...
与MIF不同,HEX文件主要用于存储程序代码或配置数据,通常用于编程器或JTAG设备加载到目标系统中。HEX文件包含地址、数据和记录类型信息,可以跨越多个内存区域。例如,一个HEX文件可能包含程序代码、配置数据和其他...
文件中定义的加载地址和运行地址符号在连接时生成,供启动代码使用,以完成数据从ROM到RAM的迁移。 连接器在处理分散加载时会自动生成预定义的符号变量,这些变量在启动时用于确定代码和数据的加载和运行位置。此外...
相关推荐
易语言的语法规则允许程序员用中文字符编写代码,如使用“取时间戳”这样的命令来获取当前系统的时间戳。时间戳通常用于跟踪事件发生的时间,或者进行基于时间的计算。它表示的是从特定起点(如1970年1月1日)到当前...
在嵌入式系统开发中,分散加载文件(Scatter Loading File)是一种重要的编程技术,它允许程序员将程序的不同部分分配到内存的特定区域,以优化系统资源的利用和提高执行效率。本文将深入探讨分散加载文件的概念、...
6. **修改build配置文件**:为了将自编译的.so库添加到QNX系统,你需要更新构建脚本或Makefile,确保链接器知道新的库位置,并且在运行时能够找到它。可能需要设置-L参数指定库路径,-l参数指定库名。 7. **部署到...
8. **错误处理**:需要注意的是,动态加载DLL需要处理可能出现的找不到文件、版本冲突等错误,因此在编写代码时要加入适当的异常处理。 9. **搜索路径**:在运行时加载DLL时,系统会按照一定的顺序查找DLL。了解这...
#### 三、ARM映像文件加载运行的应用情况 1. **在没有地址重映射的ARM应用系统中的加载运行情况**: - 在这类系统中,由于地址和空间大小固定,映像文件的加载和运行地址通常是相同的。因此,在编写程序时,需要...
源代码的转换、加载与运行是编程过程中至关重要的环节,涉及到计算机如何理解并执行程序员编写的高级语言代码。本文将详细解析这个过程,从源代码的预处理开始,经过编译、汇编和链接,最终形成可执行程序,并讨论其...
内存加载exe技术的核心在于将一个完整的可执行文件(.exe)直接读取到计算机的内存中,并从内存中执行程序,而不是传统的从磁盘加载到内存再执行的方式。这种方法能够在某些场景下提供更快、更安全、更灵活的程序...
当您拥有一个TLB文件时,可能是因为您需要创建一个新的COM组件,或者您从某个第三方软件中获取了这个文件,现在需要将其注册到系统中。 在提供的压缩包中,有以下几个文件: 1. **TypeLib.bas**:这是一个Visual ...
`rootfs_xk.tar` 文件很可能是一个编译完成的Android根文件系统的tar归档,用于解压到特定的系统分区,以便在目标设备上运行。当开发者进行自定义系统开发或者驱动开发时,他们可能需要修改或替换这个根文件系统,以...
在压缩包中的"DriverLoader"文件可能包含以下几个部分:解决方案文件(.sln)、C#源代码文件(.cs)、配置文件(.config)、资源文件(如图标、字符串资源等)以及可能的测试项目或示例代码。 总的来说,这个"C#写...
4. **加载文件系统**:将生成的映像文件加载到ramdisk中,并设置为根文件系统。 #### 4.2 使用NFS文件系统进行基本应用程序开发 除了ramdisk,还可以使用NFS(Network File System)作为根文件系统。NFS允许远程...
标题中的“dotnet-一个JScript文件的工具用于创建从内存中加载NETv2程序集”指的是一个基于JScript编写的工具,该工具能够帮助开发者在.NET Framework v2环境中动态地从内存中加载程序集。这在某些场景下非常有用,...
MiniJVMMiniJVM是一款使用python编写的简易JVM,能够从本地加载class文件并且执行绝大多数指令。支持的功能1.从本地磁盘加载class并解析2.支持绝大多数指令集的执行3.支持虚拟机内存分区以及对象的创建4.支持方法的...
1. **回调函数**:当js文件加载完成时,可以调用一个预先定义的回调函数,确保后续操作在加载完成后执行。例如,使用`fetch`API时,可以监听`then()`和`catch()`中的结果。 2. **Promise**:使用Promise可以优雅地...
这个shellcode加载器的组合可能是一个用于渗透测试或研究目的的工具,使用者可以通过Python脚本加载和执行加密过的shellcode,并且可以与Cobalt Strike和Metasploit Framework兼容,提高了在目标系统上执行代码的...
通过定制分散加载文件,我们可以控制程序代码、数据和堆栈等在目标硬件内存中的布局,确保程序运行时的效率和稳定性。在ARM7这样的嵌入式平台上,内存资源有限,因此合理分配内存空间显得尤为关键。 在编写...
ELF文件病毒是一种针对Linux系统的恶意软件,它利用了ELF(Executable and Linkable Format)文件格式的特性来嵌入自身的代码到合法的可执行文件中。本文将深入探讨ELF文件格式以及如何分析和编写ELF病毒。 首先,...
与MIF不同,HEX文件主要用于存储程序代码或配置数据,通常用于编程器或JTAG设备加载到目标系统中。HEX文件包含地址、数据和记录类型信息,可以跨越多个内存区域。例如,一个HEX文件可能包含程序代码、配置数据和其他...
文件中定义的加载地址和运行地址符号在连接时生成,供启动代码使用,以完成数据从ROM到RAM的迁移。 连接器在处理分散加载时会自动生成预定义的符号变量,这些变量在启动时用于确定代码和数据的加载和运行位置。此外...