问题标签 [classloader]

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 投票
2 回答
2590 浏览

java - Glassfish 中加载的类总数

我有 EJB 的企业应用程序。该应用程序的总大小为 34 兆。当我部署我的应用程序时,一切都很好,但是当我重新部署它时,总加载类的数量会增加。我正在使用 visualVM 来查看此信息。它应该是这样还是内存泄漏。如何解决这个问题呢?谢谢

0 投票
8 回答
6703 浏览

java - Java 类加载器

谁能给我一个好的资源或解释一下类加载器背后的概念?我在类加载器http://www.onjava.com/lpt/a/5586上找到了以下资源,但仍然没有帮助。以下问题可能看起来很愚蠢,但试图回答它们总是让我感到困惑。

  • 为什么开发人员要编写自定义类加载器,为什么不调用 Bootstrap 类加载器来调用您的自定义类?定义自定义类加载器需要什么?

  • 为什么有这么多种类加载器?例如:Bootsrap、Comman、Catalina 类加载器等,

    提前致谢。

0 投票
2 回答
1328 浏览

java - 仅部分考虑了 Java 日志记录配置

我在尝试使用one-jar打包程序来简化部署过程来交付一个项目时遇到了问题。
没有打包,一切正常,日志配置也被完美加载,但在打包中,只有部分配置被应用。

所以,这是我使用的 logging.properties:

在我的主课中,这是我加载它的方式:

日志级别以及 FileHandler 模式很好理解,因为日志记录最终在正确的文件中,但作为行 XML 输出,这让我认为格式化程序没有加载,因为它通常输出 CSV 格式。

它可能与类路径问题有关吗?有谁知道如何处理这个?

0 投票
3 回答
10918 浏览

java - Spring框架-类加载器关系

我遇到了一个可能与 Spring / 类加载器关系有关的问题。

我现在为这个问题的冗长道歉。

我有许多最初编写并打算在专用 JVM 中运行的遗留 Java 应用程序。我们在检查资源使用情况后决定,可以通过在单个 JVM 中运行多个应用程序来提高效率。在这种情况下,我编写了一个专门为我们的环境设计的容器管理器,它能够在容器(或沙箱)中运行每个应用程序。这种隔离容器的能力的基础当然是自定义类加载器。

一切正常,直到我们遇到一个使用 Spring 框架的应用程序。我有一个带有片段的 Spring 配置文件,如下所示。


以下是 Spring 实例化 bean 时日志文件的片段。

调试 [South Agent 1] (DefaultSingletonBeanRegistry.java:162) - 创建单例 bean 'MDDStructurPackager' 的共享实例

调试 [South Agent 1] (AbstractAutowireCapableBeanFactory.java:378) - 创建 bean 'MDDStructurPackager' 的实例

调试 [South Agent 1] (AbstractAutowireCapableBeanFactory.java:453) - 急切地缓存 bean 'MDDStructurPackager' 以允许解析潜在的循环引用

调试 [South Agent 1] (AbstractBeanFactory.java:213) - 返回单例 bean 'Logger' 的缓存实例

DEBUG [South Agent 1] (CachedIntrospectionResults.java:242) - 获取类 [abc.def.mdd.msg.alarm.huawei.MDDPackagerAlarmM2000] 的 BeanInfo

DEBUG [South Agent 1] (CachedIntrospectionResults.java:258) - 缓存类 [abc.def.mdd.msg.alarm.huawei.MDDPackagerAlarmM2000] 的 PropertyDescriptors

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.Class] 的 bean 属性“类”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“colectionDate”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型为 [abc.def.mdd.msg.MDDComponent] 的 bean 属性“组件”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“fileType”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型为 [java.util.ArrayList] 的 bean 属性“listCommonWords”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到 [java.util.ArrayList] 类型的 bean 属性“listHeader”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到 [abc.def.mdd.logger.Logger] 类型的 bean 属性“记录器”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.util.Map] 的 bean 属性“mapDelimiter”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到 [java.util.Map] 类型的 bean 属性“mapElement”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“namePackager”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“nameSpaceXMLSchema”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“nodeName”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“packageXMLSchema”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [abc.def.mdd.channel.ProcessingLayerListener] 的 bean 属性“processingLayerListener”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“领域”

调试 [South Agent 1] (CachedIntrospectionResults.java:267) - 找到类型 [java.lang.String] 的 bean 属性“statesObject”

DEBUG [South Agent 1] (AbstractAutowireCapableBeanFactory.java:406) - 完成创建 bean 'MDDStructurPackager' 的实例

调试 [South Agent 1] (DefaultSingletonBeanRegistry.java:162) - 创建单例 bean 'ListAlarmChannel' 的共享实例

调试 [South Agent 1] (AbstractAutowireCapableBeanFactory.java:378) - 创建 bean 'ListAlarmChannel' 的实例

调试 [South Agent 1] (AbstractAutowireCapableBeanFactory.java:453) - 急切地缓存 bean 'ListAlarmChannel' 以允许解析潜在的循环引用

调试 [South Agent 1] (DefaultSingletonBeanRegistry.java:162) - 创建单例 bean 'Jakarta' 的共享实例

调试 [South Agent 1] (AbstractAutowireCapableBeanFactory.java:378) - 创建 bean 'Jakarta' 的实例

调试 [South Agent 1] (AbstractBeanFactory.java:213) - 返回单例 bean 'MDDStructurPackager' 的缓存实例

信息:CORBA_HUAWEI_M2KJKT_ALARM (23447542):在类路径中添加了“/opt/app/abcdef/rt_dev/lib/logkit-1.2.jar”。

信息:CORBA_HUAWEI_M2KJKT_ALARM (23447542):在类路径中添加了“/opt/app/abcdef/rt_dev/lib/avalon-framework-4.1.5.jar”。

信息:CORBA_HUAWEI_M2KJKT_ALARM (23447542):在类路径中添加了“/opt/app/abcdef/rt_dev/lib/concurrent-1.3.2.jar”。

信息:CORBA_HUAWEI_M2KJKT_ALARM (23447542):在类路径中添加了“/opt/app/abcdef/rt_dev/lib/antlr-2.7.2.jar”。

调试 [South Agent 1] (ConstructorResolver.java:195) -
忽略构造函数 [public abc.def.mdd.channel.corba.M2000AlarmChannel(
java.lang.String, int, java.lang.String, java.lang.String, com.citycorp.mdd.msg.MDDComponent )抛出
bean 'Jakarta' 的 java.lang.Exception ]:org.springframework.beans.factory.UnsatisfiedDependencyException:
创建文件 [/opt/app/ 中定义的名称为 'Jakarta' 的 bean 时出错abcdef/rt_dev/etc/HUAWEI_M2KJKT_ALARM.xml]:
通过构造函数参数表达的不满足的依赖关系,索引为0,类型为[java.lang.String]:
无法将类型 [abc.def.mdd.msg.alarm.huawei.MDDPackagerAlarmM2000] 的构造函数参数值转换为所需类型 [java.lang.String]:
无法转换类型 [abc.def.mdd.msg.alarm] 的值.huawei.MDDPackagerAlarmM2000] 到所需类型 [java.lang.String];
嵌套异常是 java.lang.IllegalArgumentException:无法将类型 [abc.def.mdd.msg.alarm.huawei.MDDPackagerAlarmM2000] 的值转换为所需类型 [java.lang.String]:
找不到匹配的编辑器或转换策略


以下是 abc.def.mdd.channel.corba.M2000AlarmChannel 类的构造函数的签名:

公共 M2000AlarmChannel(MDDComponent 组件)

public M2000AlarmChannel(String host, int port, String username, String password, MDDComponent componenet)

abc.def.mdd.msg.alarm.huawei.MDDPackagerAlarmM2000类实现了MDDComponent(bean MDDStructurPackager)。



如您所见,Spring 正在实例化一些 bean,即。MDDStructurPackager 没有问题。

问题是实例化“Jakarta”bean。

线条的含义:

在文件 [/opt/app/abcdef/rt_dev/etc/HUAWEI_M2KJKT_ALARM.xml] 中定义名称为“Jakarta”的 bean 创建错误:

通过类型为 [java.lang.String] 的索引 0 的构造函数参数表示的不满足依赖关系:

无法将类型 [abc.def.mdd.msg.alarm.huawei.MDDPackagerAlarmM2000] 的构造函数参数值转换为所需类型 [java.lang.String]:

不清楚。在尝试确定适当的构造函数时,我不确定类型混淆的原因。问题可能与接口 MDDComponent 的加载有关。如果它被加载两次,在类加载器层次结构中不相关的不同类加载器,您可以想象与确定正确构造函数相关的问题。

任何感激地接受的想法,我都在抓住稻草。

谢谢布莱恩

0 投票
2 回答
5008 浏览

websphere - Websphere 类加载器委托模式

我们正在使用 WebSphere 6.1 应用程序服务器和默认的类加载器委托模式,即PARENT-FIRST。我们考虑将其更改为PARENT-LAST以便能够选择我们的 jsf 实现或我们的 web 服务堆栈。

由于 PARENT-FIRST 是默认设置,我想知道有多少人切换到 PARENT-LAST,切换的原因是什么,以及切换后你的生活是否变得更好:)

我们在生产中有很多应用程序,所以我不能只是切换到看看会发生什么,如果我们这样做,我们将进行大量测试,所以如果您切换到 PARENT-LAST,我希望得到一些反馈。

谢谢

0 投票
12 回答
5885 浏览

java - 人们必须编写自己的类加载器的原因是什么

我最近在一次采访中被问及加载类时调用类加载器的顺序。

不幸的是,我从来不需要编写自己的类加载器,所以当时不熟悉类加载的复杂性。

这让我想知道,他们编写自己的类加载器的原因是什么。

所以这就是我的问题:人们面临哪些需要编写自己的类加载器的场景?

0 投票
2 回答
514 浏览

java - 如何扩展类 java.security.SecureClassLoader?

我想编写自己的 ClassLoader。作为 Applet 的默认 ClassLoader,它应该更快、更动态。

但我不知道我应该如何实现该方法:

如果 CodeSource 中存在有效证书,则超级实现也不授予任何权利。

我必须自己验证证书还是它已经从 Java VM 验证并从用户那里接受?

0 投票
2 回答
3647 浏览

java - Java Swing 问题

我有一个卡片板,我必须在其中找到匹配项。我有两个变量buttonAbuttonB跟踪单击的方块。

当它们相等时,我可以通过简单地添加以下代码将它们从板上删除:

找到匹配项后,如何在所有按钮上放置相同的图像?我尝试了以下操作,但它并没有更改图像,而是在按钮上留下相同的图像

0 投票
2 回答
1354 浏览

jboss - 当部署在隔离的 .EAR 文件中时,jboss 4.2.2 中的 Web 模块隔离

当部署在一个隔离的.EAR 文件中时,如何在 jboss 4.2.2 中实现 Web 模块隔离(即每个包含的 Web 应用程序在同一个 .EAR 中与其他 Web 应用程序隔离)?

Jboss 4.2.2 不断警告在部署 EAR 文件时忽略 web 模块 (jboss-web) 级别的部署描述符类加载配置。

0 投票
1 回答
988 浏览

java - 在不同的插件中分离 DLL 和本机调用

我想将一些 DLL 从相关的本机 JNI 类中分离出来。

插件:

  • 在插件 A 中,加载插件时会放置和加载 dll。
  • 在插件 B(依赖于 A)中,放置了 JNI 类,其中包括对 A 中 DLL 的本机方法调用。

在运行时我得到一个 UnsatisfiedLinkError 因为找不到 JNI 类。我尝试通过更新清单文件来更新类加载器逻辑:

插件 A:

插件 B:

但这也行不通。你知道解决办法吗?

编辑:

清单 A:

清单 B: