classloader相关内容

Activity 类中的静态字段是否保证比创建/销毁周期更长?

我经常遇到这样一个问题,即我必须在多次调用活动之间保留状态(即经历几个 onCreate()/onDelete() 循环).不幸的是,Android 对这样做的支持真的很差. 作为保存状态的一种简单方法,我认为由于类仅由类加载器加载一次,因此在静态 Bundle 字段中存储在多个活动实例之间共享的临时数据是安全的. 然而,偶尔,当实例 A 创建静态包并在其中存储数据,然后被销毁,并且实 ..
发布时间:2022-01-05 20:34:35 Java开发

scala 作为脚本语言

可能的重复: “eval”在 Scala 中 我知道 scala 是一种编译语言,但我也知道我可以将类动态加载到 jvm 中,并且我可以在运行时调用 scala 编译器,最后但并非最不重要的是,我也有一个很棒的 repl,所以有scala 作为脚本语言应该是可能的. 所以我需要运行一些任务: 简单解释: val src = """ println("Hello World") ..

clojure 类重新加载如何工作?

我一直在阅读代码和文档,试图了解 clojure 中的类重新加载是如何工作的.根据许多网站,例如 http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html ,每当您加载一个类时,您基本上都会获得字节码(通过任何数据机制),将字节码转换为类 Class 的实例(通过defineClass),然后通 ..
发布时间:2022-01-02 22:57:09 其他开发

在运行时替换一些方法的内容

我想在运行时替换一些方法的内容. 我知道我可以使用 javassist 来做这件事,但它不起作用,因为我想增强的类已经被系统 classLoader 加载了. 如何在运行时替换方法的内容?我应该尝试卸载课程吗?我怎样才能做到这一点 ?我看到这是可能的,但我不知道如何去做. 如果可能,我想避免为此使用外部库,我想自己编写代码. 更多信息:- 我想增强的类包含在一个框架中(在一 ..
发布时间:2022-01-02 21:40:04 Java开发

在 JAR 中加载属性文件?

当我的 Web 应用程序依赖的其中一个 jar 尝试从 jar 中加载属性文件时,我遇到了问题.这是jar中的代码. 静态{Properties props = new Properties();尝试{props.load(ClassLoader.getSystemResourceAsStream("someProps.properties"));} catch (IOException e){ ..
发布时间:2022-01-02 18:08:27 Java开发

从内存动态加载 JAR

我想动态加载 JAR,直接用于内存. 比如说,我有一个包含 JAR 的缓冲区,我想加载 JAR 中的所有类,或者至少列出 JAR 中存在的所有文件.(类、图像等...). 例如,如果我加载的第一个类依赖于第二个类,我该怎么办?java知道如何处理吗?还是我自己来处理? 解决方案 既然你说“至少列出 JAR 中存在的所有文件",让我们从这个相当简单的任务开始. 假设,你的 JarF ..
发布时间:2022-01-01 17:17:56 Java开发

如何查找类加载器以何种顺序加载了哪些 jar?

我在其他地方找不到这个问题的明确答案,所以我会在这里试试: 是否有某种方式(程序化的或其他的)可以获取应用程序类加载器按照加载顺序加载的 JAR/类的列表?应用程序类加载器是指在应用程序服务器(WLS、WAS、JBoss...)中加载 EAR 应用程序的类加载器,但显然,它适用于任何类加载器. 所以,概括地说,我想知道的是指定类加载器加载的 JAR 的列表和顺序.不是单个类,通过调用 ..
发布时间:2022-01-01 17:10:46 Java开发

作为 InputStream 从 JAR 加载?

是否有可用于从 InputStream 加载类的 ClassLoader 实现? 我正在尝试将具有 InputStream 的 JAR 加载到新的 ClassLoader 中. 解决方案 这不太可能,因为如果您尝试自己动手,就会发现.您将无法随机访问 InputStream 来查找请求的类,因此您必须将内容缓存在内存或文件系统中. 如果缓存在磁盘上,只需使用 URLClassL ..
发布时间:2022-01-01 17:04:20 Java开发

Jar 地狱:如何使用类加载器在运行时将一个 jar 库版本替换为另一个

我对 Java 还比较陌生,所以请耐心等待. 我的问题是我的 Java 应用程序依赖于两个库.我们称它们为库 1 和库 2.这两个库共享库 3 的相互依赖关系.但是: 库 1 需要库 3 的版本 1. 库 2 需要库 3 的第 2 版. 这正是 JAR 地狱(或至少其变体之一)的定义.如链接中所述,我无法在同一个类加载器中加载第三个库的两个版本.因此,我一直试图弄清楚是否可以在 ..
发布时间:2022-01-01 17:01:22 Java开发

如何探索从哪些 JAR 加载哪些类?

有没有办法确定在运行时从哪些 JAR 加载哪些类? 我敢肯定我们以前都经历过 JAR 地狱.我在解决项目中的 ClassNotFoundExceptions 和 NoClassDefFoundErrors 问题时遇到了很多问题.我想避免在 JAR 中查找类的所有实例,并避免对代码使用消除过程,从而导致 CNFE 找到罪魁祸首. 任何分析或管理工具都会为您提供此类信息吗? 这个问题 ..
发布时间:2022-01-01 17:00:21 Java开发

Java:为什么打包成jar文件的代码会阻止外部类访问?

我的 Java 应用程序有一个插件系统.我使用 URL 类加载器调用外部类.当我的应用程序作为类文件运行时,以及当我的应用程序以 JAR 形式运行时,这部分都运行良好.我遇到的问题是,插件文件可以很好地运行自己的独立代码,但是它们创建了一个 JPanel.当我尝试将该 JPanel 添加到主应用程序类中的 JPanel 时,我得到一个引用主类的空指针异常.(com.cpcookieman.app. ..
发布时间:2022-01-01 16:53:42 Java开发

Java Classloader - 如何引用不同版本的 jar

这是一个常见的问题.我使用了 2 个库 A.jar 和 B.jar,它们依赖于同一个 jar 的不同版本. 假设在运行时我需要 THIS.x.x.x.jar MY.jar->A.jar ->这个.1.0.0.jar->B.jar ->C.jar ->这个.5.0.0.jar 我可以根据其依赖项编译特定的 jar (A.jar/B.jar),但在运行时我只需要加载 1 个版本.哪一个? 仅加 ..
发布时间:2022-01-01 16:52:18 Java开发

包含罐子的罐子中的类的替换系统类加载器

到目前为止,我看到的自定义类加载器示例涉及对 URLClassLoader 进行子类化,并使用该特定实例加载资源中的类. 我曾尝试寻找替代方法来替换 SystemClassLoader,但徒劳无功,以便我的 ClassLoader 可以查询不在类路径中的类. 我尝试了 Thread.currentThread().setContextClassLoader,但它似乎不起作用. 有 ..
发布时间:2022-01-01 16:46:09 Java开发

我有 JAXB 类加载器泄漏吗

我在 Glassfish 上部署了一个应用程序.随着时间的推移,加载的类数量攀升至数百万,而我的 permgen 似乎也在增加. 为了帮助排除故障,我在 jvm 参数中添加了以下内容.-XX:+PrintGC详细信息-XX:+TraceClassUnloading-XX:+TraceClassLoading 现在在查看输出时,我看到一遍又一遍地加载相同的类.基本上每次调用 Web 服务 ..
发布时间:2021-12-30 23:51:11 Java开发

何时以及如何标记 java 类加载器进行垃圾收集?

我们正在创建多个子类加载器,以将多个子应用程序加载到 Java 应用程序“容器"中,从而对热部署进行原型设计.当特定类加载器的类路径发生变化(即添加、删除、更新 jar)时,旧的类加载器将被丢弃(未引用),并为新的 jar 类路径创建一个新的类加载器. 更新类路径后,触发热部署,我们进行了堆转储.堆转储(使用内存分析器)表明旧的类加载器没有被垃圾收集.父类加载器中的某些类正在缓存旧的类加载器 ..
发布时间:2021-12-30 23:48:13 Java开发