简体   繁体   English

loadClass抛出由ClassNotFoundException引起的NoClassDefFoundError

[英]loadClass throws NoClassDefFoundError caused by ClassNotFoundException

Using the following code I get a NoClassDefFoundError caused by ClassNotFoundException: 使用以下代码,我得到由ClassNotFoundException引起的NoClassDefFoundError:

File file = new File( "C:\\prototype.core.bl.xmodelval.xmodel-1.0.0.jar" );
URL url = file.toURI().toURL();
URL[] urls = new URL[] { url };
ClassLoader cl = new URLClassLoader( urls );
Class cls = cl.loadClass("de.zeb.control.prototype.core.bl.xmodelval.xmodel.entity.EntityNameLengthXModelValidationRule" );

The jar and the class in the jar are definitely available. 罐子和罐子中的类肯定可用。 The following exception is thrown by cl.loadClass. cl.loadClass引发以下异常。 The full exception stack trace follows: 完整的异常堆栈跟踪如下:

Exception in thread "main" java.lang.NoClassDefFoundError: de/zeb/control/prototype/core/bl/xmodelval/XModelValidationRule
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at de.zeb.control.prototype.core.bl.xmodelval.jarwelfare.loader.XModelJarLoader.load(XModelJarLoader.java:32)
    at de.zeb.control.prototype.core.bl.xmodelval.jarwelfare.supplier.Runner.main(Runner.java:29)
Caused by: java.lang.ClassNotFoundException: de.zeb.control.prototype.core.bl.xmodelval.XModelValidationRule
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 24 more

It seems strange for me that the full class name of the ClassNotFoundException doesn't match the name of the cl.loadClass. 对我来说,奇怪的是ClassNotFoundException的完整类名与cl.loadClass的名称不匹配。

Thank you for your help. 谢谢您的帮助。

You might need to provide parent classloader, because otherwise the classloader you define won't be able to access any classes already present in your application. 您可能需要提供父类加载器,因为否则定义的类加载器将无法访问应用程序中已经存在的任何类。 Eg: 例如:

 ClassLoader cl = new URLClassLoader( urls , getClass().getClassLoader());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ClassLoader.loadClass()令人惊讶地抛出NoClassDefFoundError而不是ClassNotFoundException - ClassLoader.loadClass() surprisingly throws NoClassDefFoundError instead of a ClassNotFoundException NoClassDefFoundError:…由ClassNotFoundException引起 - NoClassDefFoundError: … Caused by ClassNotFoundException 如何解决ClassNotFoundException引起的NoClassDefFoundError? - How to solve a NoClassDefFoundError caused by ClassNotFoundException? 由java.lang.NoClassDefFoundError和ClassNotFoundException引起的错误 - Error caused by java.lang.NoClassDefFoundError and ClassNotFoundException 难道NoClassDefFoundError总是有ClassNotFoundException引起的吗? - Does NoClassDefFoundError have always ClassNotFoundException in caused by? 类声明错误(由ClassNotFoundException引起的NoClassDefFoundError) - Class declaration bug (NoClassDefFoundError caused by ClassNotFoundException) NoClassDefFoundError原因:java.lang.ClassNotFoundException:junit.textui.ResultPrinter - NoClassDefFoundError Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter 在Hive驱动程序连接线上的Hadoop中由ClassNotFoundException引起的NoClassDefFoundError? - NoClassDefFoundError caused by ClassNotFoundException in Hadoop on Hive Driver Connection line? ClassNotFoundException 导致的线程“主”java.lang.NoClassDefFoundError 中的异常 - Exception in thread "main" java.lang.NoClassDefFoundError caused by ClassNotFoundException 将 Java Web 应用程序部署到 Heroku:由 ClassNotFoundException 引起的 NoClassDefFoundError - deploying java web app to heroku: NoClassDefFoundError caused by ClassNotFoundException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM