即使已导入,也找不到类

时间:2010-12-16 14:48:43

标签: java eclipse class

我正在开发我的课程。它是用于读取和处理csv文件的OpenCSV类。

它在eclipse中的classpath中导入,也由import au.com.bytecode.opencsv.*;导入。 Eclipse没有显示任何错误,它在Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

上失败

我无法理解为什么它在这条线上失败了。我甚至尝试将所有源代码导入到我的项目中,但总是在ClassNotFound错误上失败。它是在apache tomcat 6服务器上运行的jsp应用程序。

4 个答案:

答案 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(完全限定的类名)。