草庐IT

ClassLoader

全部标签

java - 奇怪的 jboss 控制台错误

我正在为已经是多模块的Maven项目创建额外的模块。对于这个,我希望一切都像其他模块(意思是依赖项)一样,只是为了测试helloworld,然后我会去做一些更复杂的事情。当部署到jboss服务器上时,它确实打印了helloworld,但是我在控制台上遇到了一些奇怪的错误,有没有人有过类似的经历?我该如何解决?在这里:15:48:35,789ERROR[STDERR]log4j:ERRORA"org.jboss.logging.appender.FileAppender"objectisnotassignabletoa"org.apache.log4j.Appender"variable

java - 为什么 ClassLoader 创建的对象没有机会进行垃圾回收

我指的是这个代码示例,它在http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6254531中被报告importjava.net.URL;classLoader{publicstaticvoidmain(String[]args)throwsException{for(;;){System.gc();System.out.print(".");System.out.flush();newjava.net.URLClassLoader(newURL[]{newjava.io.File(".").toURL()},ClassLoader.g

java - ClassLoader 泄漏——它们值得解决吗?

ClassLoader泄漏通常会导致java.lang.OutOfMemoryError:PermGen。在应用程序服务器上工作的实例中,您可能会看到这是对一个公共(public)应用程序进行多次重新部署的结果。可以在这两个链接上看到对此问题的解释和可能的解决方案。(等等)http://blogs.oracle.com/fkieviet/entry/classloader_leaks_the_dreaded_javahttp://dev.eclipse.org/blogs/memoryanalyzer/2008/05/17/the-unknown-generation-perm/现在,

java - 为什么ClassLoader的缓存是按升序检查的?

为什么ClassLoader的缓存是按升序检查的,而类加载是按降序进行的? 最佳答案 Java中的类加载器基于三个原则工作:委托(delegate)、可见性和唯一性。委托(delegate)原则将类加载请求转发给父类加载器,如果父类加载器无法找到或加载类,则只加载该类。可见性原则是让子类加载器可以看到父类加载器加载的所有类,而父类加载器看不到子类加载器加载的类。唯一性原则允许只加载一次类,这基本上是通过委托(delegate)实现的,并确保子类加载器不会重新加载父类已加载的类。换句话说就是描述的here:Theclassloader

java - 如何调试 JVM 资源加载?

要调试JVM中的类加载,我们可以使用参数-verbose:class,但是...有人知道如何调试资源加载(例如属性文件)吗? 最佳答案 我想你需要看看使用分析器。或者使用仪器界面的东西。不确定它有多稳定,但是有BTrace,这是一种Java版本的DTrace。BTraceisasafe,dynamictracingtoolfortheJavaplatform.BTracecanbeusedtodynamicallytracearunningJavaprogram.BTracedynamicallyinstrumentstheclas

java - 使用单独的类加载器运行每个 JUnit 测试(不,真的)

我如何让JUnit为其执行的每个测试类使用单独的ClassLoader?我正在为设置大量静态变量的库编写JUnitTestRunner。我基本上想在每个测试类之间重置所有这些,而不需要知道它们是什么。我不想与框架的深入知识相结合,因为每当库内部发生变化时,我的TestRunner就会崩溃。在我继续之前,我想绝对清楚地表明我真的想要这样做。我无法控制图书馆。我没有不使用静态变量的选择。我不想使用反射或Powermock,因为我不想知道库中发生了什么。我不想使用Maven配置来fork测试过程,因为这样测试实用程序就会绑定(bind)到构建工具。我在StackOverflow上找到的所有其

java - URLClassLoader 和包私有(private)方法的可访问性

我有一个类Formula,位于包javaapplication4中,我使用URLClassLoader加载它。但是,当我从位于同一包中的另一个类Test1调用它时,我无法访问其具有默认访问修饰符的方法(我可以访问公共(public)方法)。我得到以下异常:java.lang.IllegalAccessException:Classjavaapplication4.Test1cannotaccessamemberofclassjavaapplication4.Formulawithmodifiers""如何访问在运行时从同一包加载的类的包私有(private)方法?我想这是使用不同类加载

java - 使用代理时,接口(interface)在 ClassLoader 中不可见?

当我尝试使用动态代理时,我看到以下异常com.intellij.rt.execution.application.AppMainDynamicProxy.DynamicProxyExceptioninthread"main"java.lang.IllegalArgumentException:interfaceInterfaces.IPersonisnotvisiblefromclassloaderatjava.lang.reflect.Proxy.getProxyClass(Proxy.java:353)atjava.lang.reflect.Proxy.newProxyInstan

java - Java Classloader 能否重写系统类(仅它们的副本)的字节码?

所以我有一个类加载器(MyClassLoader),它在内存中维护一组“特殊”类。这些特殊类被动态编译并存储在MyClassLoader内部的字节数组中。当MyClassLoader被请求一个类时,它首先检查它的specialClasses是否在委托(delegate)给系统类加载器之前,字典包含它。它看起来像这样:classMyClassLoaderextendsClassLoader{MapspecialClasses;publicMyClassLoader(Mapsb){this.specialClasses=sb;}@OverridepublicClassloadClass(S

java - 如何从命令行调用带有 'java' 的 groovy

我必须向一些只安装了java(没有grooy、没有$groovy_home等)的用户发送一些groovy代码。我正在尝试从命令行调用groovy,但我没有运气。这是我的bat文件:java-classpath.;lib;bin;bin-groovyintrospector.AclCollector这是我的异常(exception):Exceptioninthread"main"java.lang.NoClassDefFoundError:groovy/lang/GroovyObjectatjava.lang.ClassLoader.defineClass1(NativeMethod)a