问题标签 [contextclassloader]

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 回答
4760 浏览

java - Thread.getContextClassLoader() == null?

可以Thread.getContextClassLoader()为空吗?javadoc 不是很清楚。
图书馆应该考虑这种情况吗?

更新:我问的原因是在这种情况beansbinding.dev.java.net不起作用(我的代码确实setContextClassLoader(null)

0 投票
1 回答
2762 浏览

java - 如何安全地解决这个 Java 上下文类加载器问题?

我的数百名用户中只有一个无法启动我的 Java 桌面应用程序。对他来说只有大约三分之一的时间才开始。另外三分之二的时间在启动时抛出 NullPointerException:

我按照堆栈跟踪发现原因是

在 JEditorPane 中返回 null。

谷歌搜索显示,这是一个影响少数人的零星、非常罕见且神秘的问题。

我的问题是,作为解决方法,我能做些什么?如果我在创建 EditorPane 之前调用它,这可能会起作用:

但我并不像我想要的那样真正理解类加载器(我试图更好地理解它们)。我觉得在 EDT 中更改 contextClassLoader 可能会产生不好的后果。

有什么想法我能做什么?

编辑:我与非常了解 Java 类加载器的人有一些通信。这似乎是一个模糊的 ClassLoader 竞争条件。也就是说,Java 中的一个错误。

0 投票
1 回答
1808 浏览

java - java - 为什么在字面上调用方法时java不能使用线程上下文类加载器?

我编写了一个自定义类加载器“JarClassLoader”,它本身可以正常工作,因为以下测试用例是绿色的:

但是,以下测试用例不起作用:

注意凝视的线,当我真正调用一个方法时,我想使用线程上下文类加载器。

我已经阅读了几十个网页和文档,但没有一个能明确地告诉我粗体线是否应该起作用。我不明白哪里出错了。

字面上调用的方法可以使用类加载器来加载相应的类吗?如果不能,为什么不能?我需要它工作,因为供应商提供的罐子中的调用实际上是不使用反射或其他任何东西,我必须为不同的线程分配不同的类加载器以避免供应商罐子中的名称冲突。

有谁能够帮我?太感谢了!

0 投票
2 回答
1170 浏览

java - 疯狂的 ClassLoader 问题

课程:

问题是由于某种奇怪的原因,我必须用子 ClassLoader 加载接口InterImplClassLoader加载实现类。

在这种情况下,我会得到NoClassDefError,因为尝试加载实现的父 ClassLoaderImpl不知道Inter在子 ClassLoader 中加载的接口。

有没有办法用子 ClassLoader (context ClassLoader) 加载实现?或者我可能需要编写一些自定义 ClassLoader 来加载它们(通过打破委托规则)?

0 投票
2 回答
4367 浏览

java - 自定义 Tomcat Webapp 类加载器

我正在尝试为 tomcat 实现自定义类加载器。我的第一次尝试产生了一个类转换异常(显然,tomcat 试图将我的加载器转换为 org.apache.catalina.loader.WebappLoader)。很好,我扩展了 WebappLoader 并将 catalina.jar 添加到我的构建路径中。

现在我已经准备好部署(我认为)。我收到此错误:

严重:Catalina.start: LifecycleException: start: : java.lang.NoClassDefFoundError: org/apache/catalina/loader/WebappLoader

Tomcat 自带了 catalina.jar 来运行,所以我有 99.9% 的把握它已经加载到了 tomcat 中。我通过检查 /server/lib/catalina.jar 验证了这一点,它确实包含 apache WebappLoader。此外,正如预期的那样,手动链接另一个 catalina.jar 会产生一大堆问题。

我很困惑。任何提示都会很热门。

谢谢!

更新:有趣的是,同样的事情在 tomcat6 上(扩展 WebappLoader;在 tomcat5.5 上工作)仍然会导致 ClassCastException。在我看来,执行演员表的类是使用与加载我的类的加载器不同的加载器加载的。无论如何,我看不出我将如何控制它,除非在某个地方可能有另一个丢失的 tomcat 配置?对tomcat6有什么想法吗?

0 投票
2 回答
169 浏览

java - 类加载器特定属性

我们开发了一个应用程序容器,它为容器中运行的每个独立应用程序创建一个新的类加载器。当调用特定应用程序时,线程的上下文类加载器将与应用程序的类加载器进行适当的设置。

避免使用 ThreadLocal,是否可以在类加载器中存储属性,这样您就可以直接从类加载器中检索特定于应用程序的属性。

例如,我希望能够在访问上下文类加载器时以某种方式保存然后检索属性:

这可能吗?还是 ThreadLocal 是唯一可行的选择?

0 投票
1 回答
188 浏览

jakarta-ee - Geronimo 下使用 Tomcat 容器进行自定义注释扫描

0 投票
2 回答
83 浏览

java - Why do we need contexClassLoader

I'm wondering why Java introduced contexClassLoader for threads. I know that it is usualy used by frameworks and application servers which have to dynamically find and load classes.

However I don't understand why Java introduced contexClassLoader when we can achieve the same functionality simply by adding field that will hold necessary class loader.

0 投票
5 回答
75517 浏览

java - 如何从类加载器获取类路径?

我正在使用一些第三方代码,当给定“-classpath”命令行参数时,它不会设置 java.class.path,而是创建一个类加载器,将命令行指定类路径上的项目的所有 url 添加到类加载器,然后将其设置为上下文类加载器。在我编写的这段代码的插件类中,我得到了这个类加载器的一个实例,并且不知何故需要使用它来取回底层的类路径,以便我可以在调用 JavaCompiler.getTask(... ) 并即时编译一些其他代码。但是,似乎无论如何都无法从 ClassLoader 获取 ClassPath,并且由于 java.class.path 未设置,我似乎无法访问应用程序最初调用的底层类路径......有什么想法吗?

0 投票
3 回答
227 浏览

java - 如何检测我正在运行的 JVM 是否正在使用多个类加载器?

我认为我的问题是不言自明的。确定我使用的 JVM 正在使用多个类加载器的最快和最准确的方法是什么?如果是这样,必须采取什么措施来确保程序正确运行?

编辑:我想我需要澄清一下两个类加载器,它们可以加载同一个类吗?如果像单例这样只需要一个实例的类,我们如何防止它发生?