我正在开发我的课程。它是用于读取和处理csv文件的OpenCSV类。
它在eclipse中的classpath中导入,也由import au.com.bytecode.opencsv.*;
导入。 Eclipse没有显示任何错误,它在Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);
我无法理解为什么它在这条线上失败了。我甚至尝试将所有源代码导入到我的项目中,但总是在ClassNotFound错误上失败。它是在apache tomcat 6服务器上运行的jsp应用程序。
答案 0 :(得分:3)
您需要完全限定班级名称。尝试
Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);
来自Class.forName
的文档:
鉴于类或接口的完全限定名称(采用getName返回的相同格式),此方法会尝试查找,加载和链接类或接口。
import
语句仅在编译时使用。 (字节码中没有import
的痕迹。)因此,要求加载"CSVReader"
的类加载器无法知道您正在谈论的是哪个包(实际上只是查找默认包中的类。)
关于您的更新...
您需要确保opencsv库位于Web应用程序的类路径中。在编译过程中它是不够的......
答案 1 :(得分:2)
部署的.war文件的WEB-INF / lib或WEB-INF /类中是否需要类?
答案 2 :(得分:1)
尝试将csv jar文件移动到src文件夹,然后执行以下操作: 您的项目 - >右键单击 - >属性 - > Java构建路径 - >图书馆 - >添加Jar - > yourjar.jar
如果您已在src文件夹中安装了csv jar文件,请尝试在主项目文件夹中创建一个新文件夹“lib”并将此csv jar文件添加到该文件夹中,然后按照上述步骤操作。
答案 3 :(得分:0)
您应该为Class.forName()使用FQCN(完全限定的类名)。