Tag: classloader

在运行时加载Java-Byte-Code

我得到了一些在我的程序中生成的java-byte-code(如此编译的java-source)。 现在我想将这个字节码加载到当前运行的Java-VM中并运行一个特定的函数。 我不知道如何实现这一点,我在Java类加载器中挖掘了一点,但没有找到直接的方法。 我找到了一个解决方案,它在硬盘上采用了一个类文件,但是我得到的字节码是在字节数组中,我不想把它写到磁盘上而是直接使用它。 谢谢!

Java 9中的类加载器层次结构

从Java-8开始,我知道类加载器的层次结构如下: – Bootstrap类加载器 – >扩展类加载器 – >应用程序类加载器 Java 9中类加载器层次结构的变化是什么?它是如何工作的?

Java类加载器教程

请提供有关Java类加载的详细,全面的教程,重点介绍如何扩展该机制以及如何实际使用扩展。

Custom Class Loader有什么用?

最近我遇到了java自定义类加载器api。 我在这里找到了一个用途, kamranzafar的博客我对类加载器概念有点新意。 任何人都可以详细解释,我们可能需要它的不同场景是什么,或者我们应该使用它?

Java WebStart速度慢,从无效文件夹中请求库

问题和疑问:Java webstarted应用程序在基本文件夹而不是./lib中查找其类。 正如在Java Web Start应用程序中的类似问题中所建议的那样, 反复询问我已经关闭 jar签名的未存在文件 ,以排除安全问题,并且问题仍然存在。 下面找到关于这个简单的java程序的网络内容的简洁示例: public static void main(String[] args) { // TODO code application logic here System.out.println(“Hello World! Initializing the class from the jar residing in lib/ folder. Expecting heavy network traffic…”); //This class resides in lib/SampleJavaLibrary.jar //Initializing it just to excercise the class loader problem CDummyClass sDummy = new […]

java.lang.LinkageError:ClassCastException

我确实遇到过TestNG和RESTeasy的一个非常烦人的问题。 我有一个类,它针对一个使用RESTeasy框架公开自身的API类运行多个测试。 但是,如果我让测试运行maven(mvn test),那么我得到以下exception: java.lang.LinkageError: ClassCastException: attempting to castjar:file:/C:/Users/rit/.m2/repository/org/jboss/resteasy/jaxrs-api/2.3.0.GA/jaxrs-api-2.3.0.GA.jar!/javax/ws/rs/ext/RuntimeDelegate.classtojar:file:/C:/Users/rit/.m2/repository/org/jboss/resteasy/jaxrs-api/2.3.0.GA/jaxrs-api-2.3.0.GA.jar!/javax/ws/rs/ext/RuntimeDelegate.class at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:126) at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:96) at javax.ws.rs.core.Response$ResponseBuilder.newInstance(Response.java:394) at javax.ws.rs.core.Response.status(Response.java:116) at javax.ws.rs.core.Response.status(Response.java:130) at com.pd.api.TokenAPI_V1.validateAccessToken(TokenAPI_V1.java:141) at com.test.pd.api.TokenAPI_V1Test.testIfValidAccessTokenReturnsCorrectHTTPHeadersWhenTokenIsNotFound(TokenAPI_V1Test.java:359) 测试只是调用API obejct的方法,该方法返回一个Response对象(来自RESTeasy)。 作为测试框架,我使用TestNG。 测试方法 @Test public void testIfValidAccessTokenReturnsCorrectHTTPHeadersWhenTokenIsNotFound() throws InvalidAccessTokenException { Mockito.when(tokenService.validateAccessToken(TestConstants.ACCESS_TOKEN)).thenThrow(new InvalidAccessTokenException()); Response response = tokenAPI_v1.validateAccessToken(TestConstants.ACCESS_TOKEN, TestConstants.USER_AGENT); assert “no-store”.equals(response.getMetadata().getFirst(“Cache-Control”)); assert “no-cache”.equals(response.getMetadata().getFirst(“Pragma”)); } 问题说明 看起来RESTeasy框架在不同的类加载器中加载RuntimeDelegate。 如果我看一下源代码,那么在RuntimeDelegate(包括第126行)中有以下方法: RuntimeDelegate.java 。 因此,与错误相关的主要语句是instanceof check: if (!(delegate […]

java.lang.NoClassDefFoundError:org / dom4j / Document

我有一个名为XMLtoXML.java的类,这是其中一个方法… import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public Object[] process(Object data) { String templateXML = null; Object result[] = null; String inputxml = null; String templateNumber = null; Iterator iterator = null; String scenarioConfigUrl = null; Node inputNode; Node outputNode; String subTemplateXML = null; String outputXml = null; if (delay != […]

库存JDK类和“null”ClassLoader?

嗨伙计们:我试图通过查看一些动态创建的组件的ClassLoader来调试一个非常奇怪的类错误。 ClassLoader是我从未玩过的东西 – 我很惊讶标准的JDK类有空的类加载器实例。 有人可以根据我试图打印的加载器的类来解释这个简单主方法的输出,并且更一般地说 – ClassLoader在JVM上运行的方式 我们如何使用ClassLoader调试缺少的类。 public class MyClass { /** * @param args */ public static void main(String[] args) { System.out.println(relfect.MyClass.class.getClassLoader()); System.out.println(String.class.getClassLoader()); System.out.println(ArrayList.class.getClassLoader()); System.out.println(JButton.class.getClassLoader()); System.out.println(System.class.getClassLoader()); Boolean b = new Boolean(true); System.out.println(b.getClass().getClassLoader()); } } 产量 sun.misc.Launcher$AppClassLoader@1f7182c1 null null null null null

Java ClassLoader更改

我有一些A类: public class A { public A(String str) { System.out.println(“Create A instance: ” + str); } public void methodA() { System.out.println(“#methodA1()”); } } 我的类加载器实现: public class MyClassLoader extends ClassLoader { public MyClassLoader() { super(); } @Override public synchronized Class loadClass(String name) throws ClassNotFoundException { System.out.println(“Load: ” + name); return super.loadClass(name); } } 现在我尝试更改当前线程中的默认类加载器: import java.util.ArrayList; […]

从加载的类中获取字节码

假设在我的JVM中我有一个加载的类Class myClass 。 是否有一种可靠的方式向JVM询问 字节码 .class的内容? 就是这样的: byte[] getClassBytecode(Class myClass) { return /* the contents of the .class resource where C was loaded from */; } (显然, InputStream与byte[]一样好)。 我知道我可以使用myClass.getResource() (和朋友)来获取类文件,但是为了获取一个输入getResource的URL感觉错误而攻击类名。 另外,我不确定在动态生成C情况下这会如何表现(例如使用javax.tools.JavaCompiler )。 任何(更好)的想法? 注意:目标是能够推动 字节码 类到不同的JVM并使用自定义类加载器在那里加载它们