繁体   English   中英

使用 URLClassLoader 加载类时出现 java.lang.ClassNotFoundException

[英]java.lang.ClassNotFoundException when loading class with URLClassLoader

我有一个看起来像这样的 JAR 文件:

MacBook@ ~/workspace-sync/mparnisa_dynamodb2/out/artifacts/dynamodb $ jar tf dynamodb.jar | head
META-INF/MANIFEST.MF
mparnisa-dynamodb-table.json
com/
com/mparnisa/
com/mparnisa/dynamodb/
com/mparnisa/dynamodb/table/
com/mparnisa/dynamodb/table/ResourceModel$ResourceModelBuilder.class
com/mparnisa/dynamodb/table/ResourceModel.class
com/amazonaws/AmazonServiceException.class
// and many more...

在 IntelliJ 项目中,我想创建一个ResourceModel实例,如下所示:

package com.mparnisa.dynamodb.table;

@com.fasterxml.jackson.annotation.JsonAutoDetect(fieldVisibility = com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.ANY, getterVisibility = com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE, setterVisibility = com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE)
public class ResourceModel {

所以在我的代码中我写了这个:

File file  = new File("/Users/mparnisa/workspace-sync/mparnisa_dynamodb2/out/artifacts/dynamodb/dynamodb.jar");

URL url = file.toURI().toURL();
URL[] urls = new URL[]{url};

ClassLoader urlClassLoader = new URLClassLoader(urls);

String resourceModelClassName = "com.mparnisa.dynamodb.table.ResourceModel";

Class<?> resourceModelClass = urlClassLoader.loadClass(resourceModelClassName);

但最后一行抛出异常:

java.lang.ClassNotFoundException: com.mparnisa.dynamodb.table.ResourceModel

当找到类但静态初始化失败时,也会抛出 NoClassDefFound。 在这种情况下,程序启动时日志中应该有更多信息异常。

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM