Tag: classloader

我在spring使用加载时间编织。 如何在jetty中设置类加载器?

我在spring使用加载时间编织。 一切都适用于websphere,因为它有自己的类加载器,但我在开发模式下遇到麻烦,我使用嵌入式jetty。 如何在jetty中设置类加载器? 当我运行它时,我看到以下错误 [INFO] org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.context.weaving.AspectJWeavingEnabler#0’: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘loadTimeWeaver’: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver]: Constructor threw exception; nested exception is java.lang.IllegalStateException: ClassLoader [com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload$WebAppClassLoaderExtension] does NOT provide an ‘addTransformer(ClassFileTransformer)’ method.

带有来自Jar的多个XML文件的Spring ApplicationContext

我需要使用当前Maven构建中的“main”applicationContext -a.xml创建一个ApplicationContext。 另一个来自另一个maven构建的连接类,并在Maven依赖项包含的jar中预设。 这个想法: ApplicationContext context = new ClassPathXmlApplicationContext( new String[] { “classpath*:applicationContext-*.xml”}); 这应该从Classpath加载applicationContext-a.xml,因为它在同一个Project中。 这很有效。 然后应该从dependency-jar加载applicationContext-b.xml。 这不起作用。 注意 “classpath*:applicationContext-*.xml” 只匹配直接类路径中的XML,jar中没有任何内容。 我发现了什么: ApplicationContext context = new ClassPathXmlApplicationContext( new String[] { “classpath*:applicationContext-*.xml”, “classpath*:applicationContext-b.xml”}); 这是有效的,但前提是我可以在jar:applicationContext-b.xml中明确告诉xml的文件名 我还需要它来进行集成测试: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {“**/applicationContext*.xml”}) public class TestClass { … } 最好的想法可能是自定义装载机? 必须有一种方法来使这个模式工作…… 前段时间有一个解决方案 ,反之亦然:它只从jar获取applicationContext.xml。 如果类路径中有另一个,它只匹配此文件。

this.getClass()。getClassLoader()。getResourceAsStream总是返回null

在阅读Web应用程序中的文件时 this.getClass().getClassLoader().getResourceAsStream(../abc.txt) 总是返回null。 任何人都可以提供详细信息,我应该把abc.txt放在哪里阅读。 任何关于getResourceAsStream的文章都会有所帮助。 我搜索了很多,但没有得到任何相关信息。 请提供宝贵的建议。 谢谢。

如何在运行时在WAR中找到非Java资源?

我需要在运行时从我在Tomcat上运行的WAR运行shell脚本。 因此,我将我的脚本theScript.sh放在我的src / main / resources目录中(因为,是的,我使用Maven)。 这个目录在classpath中,我已经检查过了。 在代码中,我想将我的脚本复制到临时目录中。 所以我试图通过我的ClassLoader获取它: URL myURL = ClassLoader.getSystemResource(“theScript.sh”); if (myURL == null) { LOG.error(“Couldn’t find the resource”); } 你猜怎么着? 是的,“无法找到资源”一直出现在我的日志中。 知道我在这里做错了吗? 我的环境是传统的Eclipse / Tomcat。

PMD规则“使用适当的类加载器”解释?

有以下PMD规则: 使用正确的类加载器(严重) 在J2EE中, getClassLoader()可能无法按预期工作。 请改用Thread.currentThread().getContextClassLoader() 。 可以在某种程度上解释他们的想法吗? 究竟什么意思是“J2EE”环境?

使用自定义类加载器加载资源包

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.jar.JarEntry; import java.util.jar.JarFile; public class JarClassLoader extends ClassLoader { private String path; public JarClassLoader(String path) { this.path = path; } @Override public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { Class c = findLoadedClass(name); if (c == null) { try { c = findSystemClass(name); } catch […]

Java-Process可以删除加载的JAR吗?

您好我有以下问题: 在卸载过程中,我加载了一个JAR(jdbc-driver)。 URL pDriverJar = jarToDelete.toURI().toURL(); URL[] lURLList = new URL[]{pDriverJar}; URLClassLoader lLoader = new URLClassLoader(lURLList, Thread.currentThread().getContextClassLoader()); Thread.currentThread().setContextClassLoader(lLoader); Class aClass = Class.forName(“jdbc.Driver”); // was Oracle: oracle.jdbc.OracleDriver but should not be important if(jarToDelete.delete()){ System.out.println(“deleted”); }else { jarToDelete.deleteOnExit(); } 在终止JVM之后,jar仍然存在。 作为一个workarround,我创建了一个临时文件,并将Jar复制到该tempfile。 但是现在Tempfile不会被删除。 我读过,如果ClassLoad是GC,可以删除加载的jar。 有没有人有想法,如何删除此文件?

在Java中,Class.forName可以返回null吗?

在Java中,Class.forName是否会返回null,或者如果找不到类,它是否会抛出ClassNotFoundException或NoClassDefFoundError?

Java转换/类加载器问题

以下是问题的简化版本: SomeClass c = (SomeClass) obj.getSomeClassParent() 并非总是如此,有时会触发exception org.somepackage.SomeClass can’t be cast to org.somepackage.SomeClass 这怎么可能 ? 我想它与JAI imageio是本机lib这一事实有关,但是中继怎么会发生这种情况呢? 我可能错过了什么,但是什么? I’m using JAI imageio version 1.1 dcm4che 2.0.21 DICOM lib 这是原始代码 ImageInputStream iis = ImageIO.createImageInputStream(src); Iterator iter = ImageIO.getImageReadersByFormatName(“DICOM”); ImageReader reader = iter.next(); DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam(); 和原来的例外 org.dcm4che2.imageio.plugins.dcm.DicomImageReadParam can’t be cast to org.dcm4che2.imageio.plugins.dcm.DicomImageReadParam exception图像http://img215.imageshack.us/img215/3894/exception.jpg

Applet类加载器无法在applet的jar中找到类

我开始问这个问题,然后在提交之前找出答案。 我决定发布这个问题,以便遇到同样问题的其他人能够从我的错误中吸取教训。 我遇到了applet(实际上是JApplet )无法实例化另一个类的问题,该类与applet包含在同一个jar中。 我在Java控制台上看到的exception是: 线程“线程applet-com.company.program.cm.hmi.MediatorApplet-1”中的exceptionjava.lang.NoClassDefFoundError:com / company / program / cm / cs / JDataStore 在com.company.program.cm.hmi.MediatorApplet.getMediator(MediatorApplet.java:63) 在com.company.program.cm.hmi.MediatorApplet.init(MediatorApplet.java:49) at sun.plugin2.applet.Plugin2Manager $ AppletExecutionRunnable.run(Unknown Source) 在java.lang.Thread.run(未知来源) 引起:java.lang.ClassNotFoundException:com.company.program.cm.cs.JDataStore at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ……还有4个 引起:java.io.IOException:打开HTTP连接失败:http:// localhost:8080 / TransportHMI / pages / com / company / program / cm / cs / […]