草庐IT

java - 使用什么类加载器?

我有几个关于类加载器的问题。Class.forName("class.name");和....NotYetLoadedClasscls=newNotYetLoadedClass();.....在每种情况下将使用哪些类加载器?对于第一种情况,我假设类加载器用于加载正在执行方法代码的类。在第二种情况下,我假设线程上下文类加载器。如果我错了,请给出一个小的解释。 最佳答案 两者都使用当前的ClassLoader。正如DNA正确指出的那样,http://docs.oracle.com/javase/6/docs/api/java/lang/

java类加载器和运行时编译

尽管警告要我放弃目前的做法,但我目前看不到更好的方法来解决我的问题。我必须生成在运行时运行Java代码,然后编译它、加载它并引用它。问题是生成的代码导入了系统类加载器已经加载的代码(我想)——也就是说,代码存在于我的类路径中的一个jar中。(我在Java6上的Tomcat6Web容器中运行。)您可能会问自己为什么这是个问题-好吧我肯定不知道-但事实是我遇到了编译错误:/W:/.../parser/v0.5/AssignELParser.java:6:packagecom.xxx.yyy.zzz.configurationdoesnotexist根据互联网上的一些示例,我定义了以下类:c

java - Spring配置类加载顺序与spring-boot @ConditionalOnMissingBean?

我想使用@ConditionalOnMissingBean启用自定义配置和合理的默认值?我有一个springboot应用程序:@Configuration@Import({CustomConfiguration.class,DefaultConfiguration.class})@EnableAutoConfiguration(exclude={MetricFilterAutoConfiguration.class})publicclassApplication{@AutowiredErrorListenererrorListener;}和一个允许Springxml或组件扫描的Cust

java - 不安全的类加载问题?

Unsafe有一个方法来确保类被初始化:Unsafe.ensureClassInitialized(Class)line:notavailable[nativemethod]我怀疑这种类型的初始化不会像常规java类加载那样锁定类,因为我偶尔会遇到一些不可能的情况。如果需要,我稍后可以提供更多详细信息,但是有谁知道使用Unsafe的类加载是否有这样的怪癖?顺便说一句,这里有一个关于如何加载该类的简短堆栈跟踪:Unsafe.ensureClassInitialized(Class)line:notavailable[nativemethod]UnsafeFieldAccessorFact

Java类加载

我想了解Java类加载器的工作原理。看了一些文章,还是有些不明白。据我了解,第一个类加载器是Bootstrap类加载器(BCL)。是否由JVM加载?之后,BCL加载rt.jar库和扩展类加载器(ECL)。反过来,ECL加载扩展和应用程序类加载器(ACL)。ACL负责从类路径加载所有用户开发的类。这个描述是否正确?有几个问题:每个类加载器在内存中只存在一个实例吗?(BCL,ECL,ACL)?我看过委托(delegate)原则,但对我来说有点不清楚。它是如何工作的,假设我们需要加载MyClass。首先jvm将这个类名赋予ACL,这对我来说还不清楚,ACL通过类路径查找,如果没有这样的类,则

类加载器中的 Java 死锁

我编写了两个自定义类加载器来动态加载代码。第一个从Jar中加载代码:packagecom.customweb.build.bean.include;importjava.net.URL;importjava.net.URLClassLoader;importcom.customweb.build.process.ILeafClassLoader;publicclassJarClassLoaderextendsURLClassLoaderimplementsILeafClassLoader{publicJarClassLoader(URL[]urls,ClassLoaderparent)

java - 使用多个类加载器节省 PermGen 空间

我们正在用Scala编写一个包含很多类的大型GUI应用程序,我们不得不增加PermGen空间才能加载所有类。该应用程序本身会显示一系列基于屏幕的Activity,每个Activity都会加载自己的大量类。在任何时间点都只会加载/显示一个Activity。在完成一些Activity后,我们在PermGen空间中遇到了OutOfMemoryError。我知道PermGen空间是garbagecollectedjustliketherestoftheheap,但我很想知道我是否可以减少所需的PermGen空间,例如每个Activity一个ClassLoader以允许类卸载。所以:我知道系统类

javax.naming.NamingException : JBAS011843: Failed instantiate InitialContextFactory org. jnp.interfaces.NamingContextFactory 来自类加载器

大家好,我在Jboss-as-7.1.1中遇到了一些问题。我正确部署但是当我从客户端发送请求时出现错误。我正在使用Jboss-7.1.1,部署文件夹是standalone/deployment(axis2.war,response.war,SpSpecific.ear,responsecomponet.ear)部署日志:-13:00:51,457INFO[org.jboss.modules]JBossModulesversion1.1.1.GA13:00:52,261INFO[org.jboss.msc]JBossMSCversion1.0.2.GA13:00:52,381INFO[o

java - 多线程类加载可能吗?

是否可以在Java中实现多线程类加载器?在元驱动的框架中,我需要提前加载数百个类,即不像系统类加载器那样懒惰。为了加速这一点,我想更好地利用当前的多核CPU。在我深入探讨之前,如果有人已经对这个问题有一些经验,或者是否可能完全清楚defineClass()可能是这种情况下的瓶颈,我会很感兴趣。谢谢安德烈 最佳答案 我相信目前您会遇到独占锁。在JDK7中,类加载器将能够将自己标记为具有并行能力。一如既往,我建议可能做一些粗略的计算,然后实事求是。 关于java-多线程类加载可能吗?,我们在

java - 如何将 JDK6 ToolProvider 和 JavaCompiler 与上下文类加载器一起使用?

我的用例是使用JDK6中提供的ToolProvider和JavaCompiler类从java程序编译生成的源文件。源文件包含对上下文类加载器(它在J2EE容器中运行)中的类的引用,但不在系统类加载器。我的理解是,默认情况下,ToolProvider将使用系统类加载器创建JavaCompiler实例。有没有办法指定JavaCompiler使用的类加载器?我试过这种方法,它是从IBMDeveloperWorks上的一些东西修改而来的:FileManagerImplfm=newFileManagerImpl(compiler.getStandardFileManager(null,null,