- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 C++ 启动线程并调用 Java。 JVM 本身正确设置了类路径,所有必要的 jar 都传递给了 -Djava.class.path。
为什么“上下文类加载器”在新线程中永远为空?
我有这个场景:
ClassLoader cl = Thread.currentThread().getContextClassLoader(); // null on new threads
ClassLoader currCl = MyClass.class.getClassLoader();
ClassLoader jbossCl = org.jboss.remoting.InvocationResponse.class.getClassLoader();
在第一个线程中(在 Eclipse 中称为“main”),所有三个对象都是有效的并且包含类。在所有后续线程中,cl
为空。
对我来说没有任何意义,如果我将类加载到 JVM 中,它们应该对全局的每个线程可用,不是吗?由于某种原因,currCl 和 jbossCl 中的类数量也大不相同。第一个有 ~600,另一个有 >1000
最佳答案
我们遇到了同样的问题,这令人费解。第一个线程可以加载类,但附加到 JVM 的 native 线程不能。您的问题具有与以下相同的解决方案: Service loader does not locate service provider class, even though class is in same JAR file as META-INF/services版主可能想将此标记为重复,但这个问题听起来非常不同。
来自此文档 http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/invocation.html
“当线程附加到 VM 时,上下文类加载器是引导加载器。”
任何通过 AttachCurrentThread() 连接到 JVM 的 native 线程只能获得引导类加载器,甚至不能获得系统类加载器。除非您明确修复新线程的上下文类加载器,否则无法从新线程加载类。
这可以像这样完成:
java.lang.Thread.currentThread().setContextClassLoader(
java.lang.ClassLoader.getSystemClassLoader()
);
关于java-native-interface - 为什么后续的 jni 线程在 currentThread().getClassLoader() 上返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354535/
我对 weblogic 12c 有任何问题。 我有一个 Java Web 应用程序,它与 TomCat 一起运行。 不,我必须在 weblogic 12c 服务器上传输此应用程序。我已更改任何文件并部
我有一个 Maven 项目。我的整个代码位于文件夹 {PROJECT_ROOT}/src/main/java 中。当我编写代码时: InputStream input = VertxApp.class
在 Java 中,您可以使用以下代码读取嵌入在 JAR 文件中的文件: String file = "com/company/package/filename.txt"; InputStream is
下面是我尝试使用的代码。 InputStream in = new BufferedInputStream(Tester.class.getClassLoader().getResourceAsSt
线程上下文的类加载器有多独特。每次启动线程时都会重置吗? 我们能否始终确保 2 个并行线程永远不会具有相同的上下文类加载器? 我看到像 Axis 这样的一些框架依赖于此来获取和设置运行时设置变量。 最
我在servlet加载文件,使用.getClassLoader().getResourceAsStream(path),路径在WEB-INF/classes目录中,我在更改路径文件内容后发现,但文件s
是否可以模拟(或至少抑制)此类调用 MyClass.class.getClassLoader().getResourceAsStream("file.txt") 使用PowerMock? 最佳答案 一
this.getClass().getClassLoader().getResource() 和 ClassLoader#getResource() 有什么区别? 弗兰克 最佳答案 第一个是实际代码,
众所周知,rt.jar 库中的类是通过 Bootstrap Classloader 加载的。java.lang是rt.jar库的一部分。 但是,这个示例 System.out.println(Arra
假设我有一些 Java 代码: public class Widget { ...whatever } 还有一些类加载Widget的代码: ClassLoader widgetLoader =
我有一个项目,其中有一个通用部分和几个“特定于实现的”,通过包装器使用,其中使用 URLClassLoader(以公共(public)类加载器作为父级)加载实现。现在,有一个由@Foo注释的通用类A,
当我阅读有关Class的文档时,对于forName()方法,文档说: Class.forName ("Foo") 相当于: Class.forName ("Foo", true, this.getCl
我正在使用一种方法为研究项目动态生成 XML 文件,它们被放入从文件路径读取的加载程序中,我无法控制加载程序如何处理事情(否则我会传递内部 XML 表示而不是乱搞临时文件),我使用以下代码来保存文件:
根据 Class 的 javadoc Returns the class loader for the class. Some implementations may use null to repr
为什么需要使用Class对象调用getClassLoader()?为什么我不能简单地使用该包中存在的任何类的对象来调用 getClassLoader() ?例如,为什么我不能简单地使用 (new Te
在我的一个 JUnit 测试中,我试图加载目录中包含的所有文件。我使用 .getClassLoader().getResource("otherresources") 来查找目录。然后我创建了一个新的
我有这个测试应用: import java.applet.*; import java.awt.*; import java.net.URL; public class Test extends Ap
我有一个资源(速度模板),我希望能够在开发期间进行交换。然而, getClass().getClassLoader().getResourceAsStream() 似乎缓存了模板。除了使用文件加载器而
我有一些代码可以调用.. x = getClass().getClassLoader(); 这会返回 null。 当我不是从 Eclipse 而是从命令行启动相同的代码时,它会返回一个类加载器。 我可
我在 eclipse helios 中创建了一个带有单个子模块的最小 Maven 项目。 在 src/test/resources 文件夹中,我放置了一个文件“install.xml”。在文件夹 sr
我是一名优秀的程序员,十分优秀!