问题标签 [dynamic-class-loaders]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2022 浏览

java - 重新加载一个类,使其静态成员重新初始化

假设我有一个像下面这样的类

显然,FIELD_*当我们第一次引用Foo. 假设 myEnv.getProperties(String)不是纯粹的功能(即,它可以返回不同的值。如何?这里不重要)

如何强制Foo“重新加载”类,以便重新执行所有类初始化代码(这样我可以为静态字段设置不同的值)?

(由于各种原因,我不能使这些字段成为非静态或非最终的。所以请不要建议像使 Foo 成为接口这样的解决方案,并覆盖各种 getter 方法)

谢谢

0 投票
1 回答
1014 浏览

java - Use cglib BeanCopier with multiple classloaders

I'd like to copy one bean to another in Java. The problem that it is inside classloading-juggler framework and both classes are loaded by different classloaders which also differs from the current classloader.

It is required to do it in most efficient way, so the best way is to use bytecode generation solutions (like cglib BeanCopier), but not reflection-based.

The issue is that cglib BeanCopier doesn't work in this case. The simplest code to show it is:

It gives the exception:

I'm finding the way to resolve it. In my case both classes are the same but loaded with custom classloaders. Also the properties contain only privimives and classes from java.* (so they are loaded by standard classloader).

0 投票
1 回答
164 浏览

java - 沙盒或隔离类加载器,用于将应用程序与运行时环境分开

Tomcat 的 Web 应用程序被包装到一个 .war 文件中并被扔到 Tomcat 中。应用程序可以使用 war 文件中的类和包含的 jar 文件。这将 Tomcat 的运行时类与应用程序类分开。

使用storm时(参见storm-project.net),没有类似的隔离。相反,推荐的方法需要创建一个“胖 jar”,表示在将所有必要的类文件从各自的 jar 中解包后包含所有必要的类文件的 jar。对于简单的情况,这是可行的,但生成的胖 jar 必须正确合并来自所有合并 jar 的所有 META-INF/* 文件,这不能半自动工作。

我不会害羞地编写自己的类加载器来模拟类似战争文件的东西。除了我不知道如何拦截加载我部署的所有类的默认类加载器。

我的理论是我的应用程序的一个类首先由默认类加载器加载。大概在它的 -static部分我会施放魔法类加载器咒语,这样所有依赖的类都将由我自己的类加载器加载,这将如何从我认为合适的任何东西中获取必要的类。

对所描述的一般问题以及所需的特定魔法的任何提示都值得赞赏。

0 投票
0 回答
949 浏览

java - Java 类加载器不加载类中导入的类

我正在尝试使用 ClassLoader 加载一个类,如下所示

如果示例类导入其他类。JVM会自动加载该类吗?因为它给我一个错误 NoClassDefFoundError 是另一个类 Example2 是在类 Example 中导入的并且无法加载。

我真的不知道发生了什么。

提前致谢

0 投票
2 回答
2184 浏览

c# - 使用 Assembly.GetExecutingAssembly() 从其他类库中获取程序集

我使用实体框架来映射数据库中的类,在我的ObjectContext类中:

上面的代码得到所有类typeof(EntityTypeConfiguration<>)。如果我的“EntityMap”类与我的对象上下文在同一个类库中,那没关系,但是如果我map classes在一个单独的类库中编写,则不起作用。Map classes无法识别ObjectContext

0 投票
1 回答
742 浏览

java - 热部署与类加载有何关系?

我正在阅读关于类加载和OSGI. 但我对以下短语有误解:

这是此演示文稿中的第 17 张幻灯片

幻灯片中的屏幕:

在此处输入图像描述

请澄清这一点。

0 投票
2 回答
2322 浏览

java - jar的动态加载和卸载

我们有一个基于 java 的 (jersey+grizzly) REST 服务器,它公开诸如
foo.com/{game}/rules
foo.com/{game}/players
foo.com/{game}/matches 之类的调用


可以有任意数量的游戏
每个游戏都有不同的规则、玩家、比赛实现
由于历史原因,我们希望每个游戏实现都有单独的 jar


所以有 REST 服务器
,当有像 foo.com/tennis/rules 这样的调用时,
我们希望 REST 服务器动态加载“网球”jar。罐子执行它的操作。然后应该卸载 jar
如果下一个调用是针对 foo.com/football/players 我们希望 REST 服务器动态加载“足球”jar。罐子执行它的操作。然后 jar 应该被卸载


有没有一种技术可以做到这一点?
显然,围绕 [this] 有一个非常古老的问题:java:是否有一个框架允许动态加载和卸载 jars(但不是 osgi)?

0 投票
0 回答
903 浏览

java - 使用依赖项动态加载类

我目前有一个具有多个依赖项(包含在 jar 中)和一个位于其他地方的单个依赖项的 maven 项目,该依赖项也被编译为 jar 文件。现在我正在尝试在我的项目中动态加载类,这样一个简单的类就可以工作:

但是一旦我的班级试图与我的项目互动,它就会说无法解决外部依赖关系。有没有办法在我编译时自动将项目的所有依赖项包含到我的类路径中?(我已经添加了project.jar)或者有没有其他方法可以编译它并执行这个类而没有这个问题?

编辑:它现在正在编译,因为我将 jar 手动添加到我的类路径中,但我现在遇到运行时异常

我的课:

异常(注意:日志是反转的!):

谢谢你的帮助,乔巴

0 投票
1 回答
1241 浏览

scala - 动态加载 Scala 对象

我有许多操作数据库的对象(不是类),我想制作一个更小的帮助类,这样我就可以做类似的事情java my.helper.class my.database.class并执行该run方法。

例如,这编译

然后做我所期望的。

这也编译

但是会发生这种情况:

这是有道理的,我认为这会起作用:

但它也失败了。我知道我可以将所有这些静态对象变成类,但这在这个应用程序中没有意义,所以我特意寻找优雅的方法来做到这一点。

0 投票
1 回答
3715 浏览

java - 需要在运行时用动态生成和编译的 java .classfile 替换运行时的现有类

我的目的是在运行时将新属性 + getter setter 方法动态注入到类定义中。目前我有一种方法可以使用新添加的属性重新生成代码,然后编译生成的代码。

最初,我将在编译时为每个类创建一个模板。在运行项目时,模板类被加载到运行时。我写了一些代码来动态生成java代码并编译它。当我使用下面的代码加载新创建的类时,我无法访问注入的方法。我认为我无法覆盖现有的运行时定义。我浏览了很多博客,但仍然不明白为什么。请帮忙。

我正在访问 DROOLS 中新添加的方法,并且它没有在任何其他类中引用,这可能会在编译期间引发问题。具有新属性的规则引擎的规则在运行时更新,因此我需要相应地调整我的代码。下面是类加载器代码。此代码不会引发任何异常,但无法解决我的目的。不确定编码是否正确。