我正在制作一个自动发送电子邮件的应用程序。最初读取 csv 文件,创建 Recipient 类的实例并将其添加到数组列表中。但是,我收到了大量错误,包括 NoClassDefFoundError 和 ClassNotFoundException。
这是我的代码:
import java.util.ArrayList;
import java.util.List;
import java.io.FileReader;
import java.io.IOException;
import com.opencsv.CSVReader;
import com.opencsv.exceptions.CsvException;
public class UserDataLoader {
private final String url;
private ArrayList<RECIPIENT> mailingList = new ArrayList<>();
public UserDataLoader (String url){
this.url = url;
}
public void loadData(){
try (CSVReader reader = new CSVReader(new FileReader(url))) {
List<String[]> records = reader.readAll();
for (int i = 1; i <= records.size(); i++){
String[] record = records.get(i);
String name = record[0];
String emailAddress = record[1];
String dateOfBirth = record[2];
RECIPIENT customer = new RECIPIENT(name, emailAddress, dateOfBirth);
mailingList.add(customer);
}
} catch (IOException | CsvException e) {
e.printStackTrace();
}
}
public ArrayList<RECIPIENT> getMailinList(){
return mailingList;
}
}
具体错误如下: 线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/commons/lang3/ObjectUtils 在 com.opencsv.CSVParser.(CSVParser.java:110) 在 com.opencsv.CSVReader。(CSVReader.java:99) 在 UserDataLoader.loadData(UserDataLoader.java:19) 在 App.main(App.java:5) 引起原因:java.lang.ClassNotFoundException:org.apache.commons.lang3.ObjectUtils 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ...还有4个
我应该期望不会出现错误,但我不确定这是从哪里来的。我已经下载了opencsv,将其放入vscode中我引用的库中,所有java文件和csv文件都在同一个文件夹中。
将其添加到您的 pom.xml 中
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>