研究jvm hotswap的过程中,有一步需要读取java class的字节流,本来想只提供一个class就好了,但是在Web项目下不通用,先记录下来,留待以后使用。
private static byte[] loadBytes(Class<?> cls) throws IOException {
if (cls == null)
return null;
String name = cls.getCanonicalName().replaceAll("\\.", "/") + ".class";
InputStream is = ClassLoader.getSystemResourceAsStream(name);
BufferedInputStream bis = new BufferedInputStream(is);
try {
int length = is.available();
byte[] bs = new byte[length];
System.err.println("ddd:" + bs.length);
bis.read(bs);
// is.close();
return bs;
} finally {
bis.close();
}
}
ps:
-javaagent:$CATALINA_BASE/lib/classreloader-1.0.0.jar
分享到:
相关推荐
在IT领域,尤其是在Web开发中,图片文件与Base64编码字节数组字符串的转换是一种常见的操作。这种转换在不直接使用图片文件路径或URL,而是将图片数据嵌入到HTML、CSS或JavaScript中时非常有用。下面我们将详细探讨...
//从输入流中获取数据并以字节数组返回public class StreamTool { /** * 从输入流获取数据 * @param inputStream * @return * @throws Exception */ public static byte[] readInputStream(InputStream ...
4. **获取字节数组** 当所有文件数据都被写入ByteArrayOutputStream后,我们可以使用`toByteArray()`方法将数据转换为字节数组。 ```java byte[] fileByte = bos.toByteArray(); ``` 5. **应用场景** 这种...
5. 使用`ClassWriter`生成字节码并将其转换为`byte[]`数组。 6. 最后,通过`ClassLoader`将生成的字节码加载为实际的Java类。 通过这样的方式,ASM可以帮助我们深入理解Java字节码,同时也为我们提供了强大的工具...
先将`long`值放入`ByteBuffer`,然后调用`array()`方法获取字节数组。 4. **整体工具类源码** 上述转换方法可以封装到一个工具类中,方便在项目中重复使用。例如,我们可以创建一个名为`DataConverter`的类,包含...
在处理大量数据时,如从网络获取的字节数组,我们通常会使用`BitmapFactory.Options`来优化内存使用。这个类允许我们设置解码参数,如缩放比例、解码格式等,以减少内存消耗。 创建Bitmap的步骤如下: 1. **读取...
10. **方法的访问**:Class对象提供了`getMethod()`、`getDeclaredMethod()`等方法,可以获取类的方法信息,并通过`invoke()`方法动态调用方法。 总结来说,Java的Class类是理解Java运行时类信息的关键,它使得程序...
// 获取字符串的字节数组,使用UTF-8编码 byte[] bytes = str.getBytes(StandardCharsets.UTF_8); if (byteLength > bytes.length) { byteLength = bytes.length; } // 创建一个新的字节数组,只包含前...
- 调用 `MemoryStream` 的 `ToArray` 方法,获取字节数组。 示例代码可能如下: ```csharp public byte[] ImageToByteArray(Image image) { using (var memoryStream = new MemoryStream()) { image.Save...
本文将详细介绍一种简单有效的方式:通过Java语言编写一个类来获取指定URL的数据,并对该方法进行深入解析。 #### 一、背景介绍 在实际项目中,经常需要从网络上抓取数据,例如爬虫程序、数据同步等场景。本篇介绍...
1. 使用`getBytes()`方法转换字符串为字节数组,传入特定的字符编码,例如UTF-8。 2. 计算字节数组的长度,即字节数。 3. 根据目标字节数,遍历字节数组来找到对应的字符边界。 4. 使用这些边界值来调用`substring()...
4. **类的定义**:使用`defineClass()`方法将字节数组转换为Java类。这个方法会将字节数组转换为`java.lang.Class`对象,然后返回。 5. **异常处理**:处理可能发生的网络错误、文件找不到错误等异常,确保类加载...
1. **序列化**:类可能会有一个`Serialize`方法,用于将对象转换成字节数组。这个过程通常涉及遍历对象的所有成员,将它们的值转化为字节并添加到数组中。为了实现这一点,对象通常需要支持某种形式的访问器(getter...
例如,你可能需要使用`System.Text.Encoding.UTF8.GetBytes`方法将字符串转换为字节数组,或者使用`Convert.FromBase64String`方法将Base64编码的字符串解码为字节数组。 总的来说,"arraycrypt_C#_"这个主题涵盖了...
”,所以可以由此来进行判断 代码如下:class StringOP { /// /// 获取中英文混排字符串的实际长度(字节数) /// /// ”str”>要获取长度的字符串 /// 字符串的实际长度值(字节数) public int getString...
1. **获取ClassWriter对象**:ASM中的`ClassWriter`类用于生成字节码。首先,我们需要创建一个`ClassWriter`实例,传入一个标志来决定是否优化生成的字节码。 2. **定义类结构**:使用`ClassWriter`的`visit`方法来...
在C/C++编程中,获取数组长度是一个常见的需求,但需要注意的是,这两种语言并没有内置的函数可以直接获取数组的长度。通常,我们可以通过两种方式来获取数组的元素个数,即计算数组占用的内存大小除以单个元素的...
// 读取图片文件到字节数组 byte[] imageData = File.ReadAllBytes("path_to_image.jpg"); return imageData; } ``` 接下来,我们需要在C#客户端中调用这些Web服务方法。使用`System.Net.WebClient`类或者`...
3. **获取哈希值**:最后,调用`digest()`方法,它会返回一个字节数组,表示计算后的哈希值。如果需要以十六进制字符串的形式显示哈希值,需要将这个字节数组转换为字符串,这通常通过遍历字节数组并将其转换为对应...