真正完成类的加载工作是通过调用 defineClass
来实现的;
而启动类的加载过程是通过调用 loadClass
来实现的;
就是类加载器分为加载和定义
protected Class<?> findClass(String name) throws ClassNotFoundException { byte[] classData = getClassData(name); if (classData == null) { throw new ClassNotFoundException(); } else { return defineClass(name, classData, 0, classData.length); } }
private byte[] getClassData(String className) { String path = classNameToPath(className); try { InputStream ins = new FileInputStream(path); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int bufferSize = 4096; byte[] buffer = new byte[bufferSize]; int bytesNumRead = 0; while ((bytesNumRead = ins.read(buffer)) != -1) { baos.write(buffer, 0, bytesNumRead); } return baos.toByteArray(); } catch (IOException e) { e.printStackTrace(); } return null; }
finClass方法中,先加载类全称字符串,返回byte数组,如果返回为空,即这个class文件不存在,则抛出classnotfountException;
如果这个文件存在,才开始定义这个类,此时,如果定义这个类失败,抛出NoClassDefFoundError ;
http://www.ibm.com/developerworks/cn/java/j-lo-classloader/
相关推荐
整个系统都没有错误,但是在发布运行后,控制台上却抛出了这样的异常: java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport异常处理
4. **java.lang.NoClassDefFoundError- javax-servlet-jsp-jstl-core-Config - CSDN博客.url**:这个URL指向一个CSDN博客文章,很可能提供了关于如何解决特定`NoClassDefFoundError`的详细步骤,特别是与`javax....
在Java编程中,遇到“Exception in thread 'main' java.lang.NoClassDefFoundError”是一种常见的异常情况,这通常意味着JVM在运行时未能找到指定的类定义。此错误不同于ClassNotFoundException,后者发生在尝试加载...
NoClassDefFoundError和ClassNotFoundException都是Java中的类加载错误,但是它们之间有着明显的区别。ClassNotFoundException是在编译的时候在classpath中找不到对应的类而发生的错误,而NoClassDefFoundError是在...
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688) at java.lang.ClassLoader.loadClass(ClassLoader.java:667) at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119) at...
这个错误很容易让人误解为是`ClassNotFoundException`,但实际上它们之间有区别:`ClassNotFoundException`是在类加载器尝试加载特定类但找不到对应的.class文件时抛出的,而`NoClassDefFoundError`则是在类已经被...
错误堆栈中提到的 `TypeUtils.parseType(TypeUtils.java:184)` 和 `KeyFactory.(KeyFactory.java:66)` 表明在CGLIB的某些初始化过程中,它尝试访问 `org.objectweb.asm.Type` 类,但失败了。这通常是因为缺少ASM库的...
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport 问题-附件资源
运行Sqoop报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/LogicalType,下载此资源放到Sqoop的lib目录下即可
java.lang.NoClassDefFoundError: org/jaxen/JaxenException at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230) at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207) at org....
at org.apache.hadoop.yarn.client.api.TimelineClient.createTimelineClient(TimelineClient.java:45) at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.serviceInit(YarnClientImpl.java:163) at org...
项目工程中用到jdk1.6相关方法,可以使用,但是升级到jdk1.8以后,编译出现java.lang.NoClassDefFoundError: sun/io/CharToByteConverter错误,后经查询,是jdk1.8版本中已经从sun.io.*中进行去除。网上找来了相关...
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class....
java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的区别 Oracle 一个表字段,更新另一个表字段 报 not null PowerDesigner去除引号方法 显示公式和编辑公式的区别 Exception occurred executing ...
Java程序报错:Caused by: java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile 时,可引入该包解决。可能有不同版本和大小的区别。
注意!!!!这个jar仅支持commons-lang-3.x 注意!!!!这个jar仅支持commons-lang-3.x ...Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
Exceptionin thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/... at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ...9 more
nested exception is java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException] with root cause java.lang.ClassNotFoundException: org.apache.commons.lang.exception....