我正在开发的程序中有一个类。这是OpenCSV用于读取和处理 csv 文件的类。
它是通过 import au.com.bytecode.opencsv.*;
导入到 Eclipse 中的类路径中的。 Eclipse 没有显示任何错误,并且在此 Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);
我就是不明白为什么它在这条线上失败了。我什至尝试将所有源代码导入到我的项目中,但总是因 ClassNotFound 错误而失败。这是一个运行在 apache tomcat 6 服务器上的 jsp 应用程序。
最佳答案
您需要完全限定类名称。尝试一下
Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);
来自 Class.forName
的文档:
Given the fully qualified name for a class or interface (in the same format returned by getName) this method attempts to locate, load, and link the class or interface.
import
语句仅在编译时使用。 (字节码中没有 import
的痕迹。)因此,被要求加载 "CSVReader"
的类加载器无法知道您正在谈论哪个包关于(实际上只是在默认包中查找该类)。
关于您的更新...
您需要确保 opencsv 库位于您的 Web 应用程序的类路径上。它在编译期间存在是不够的......
关于java - 即使导入也找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4461977/