【问题标题】:Class not found even if it's imported即使导入了类也找不到
【发布时间】:2010-12-16 14:48:43
【问题描述】:

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

它是在我的 Eclipse 类路径中导入的,也是由 import au.com.bytecode.opencsv.*; 导入的。 Eclipse 没有显示任何错误,它在这个 Class.forName("au.com.bytecode.opencsv.CSVReader", false, null); 上失败了

我只是不明白为什么它在这条线上失败了。我什至尝试将所有源代码导入我的项目,但它总是因 ClassNotFound 错误而失败。它是一个运行在 apache tomcat 6 服务器上的 jsp 应用程序。

【问题讨论】:

  • 你是否也通过eclipse启动应用程序?
  • 我也忘了提这个……这是一个运行在tomcat上的jsp应用
  • 更新了我的答案。确保 opencsv 库位于您的 Web 应用程序的类路径中。

标签: java eclipse class


【解决方案1】:

您需要完全限定类名。试试

Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

来自Class.forName的文档:

给定类或接口的完全限定名称(与 getName 返回的格式相同),此方法会尝试定位、加载和链接类或接口。

import 语句仅在编译时使用。 (在字节码中没有import 的踪迹。)因此,被要求加载"CSVReader" 的类加载器无法知道您在谈论哪个包(实际上只是在默认值中查找该类包)。


关于您的更新...

您需要确保 opencsv 库位于您的 Web 应用程序的类路径中。它在编译期间存在是不够的......

【讨论】:

  • 对不起......忘记更新我的描述......我在发布之前尝试过这个,但它总是失败。
  • 它在我的类路径中,它也与应用程序一起导出。
  • 重新检查您的拼写并确保您可以在运行时使用该库。如果它在你的类路径中并且你有足够的权限,它应该可以工作。
【解决方案2】:

部署的 .war 文件的 WEB-INF/lib 或 WEB-INF/classes 中是否需要的类?

【讨论】:

  • 我还没有导出...奇怪
【解决方案3】:

尝试将 csv jar 文件移动到 src 文件夹,然后执行以下操作: 您的项目 -> 右键单击​​ -> 属性 -> Java 构建路径 -> 库 -> 添加 Jar -> yourjar.jar

如果您在 src 文件夹中已经有 csv jar 文件,请尝试在主项目文件夹中创建一个新文件夹“lib”并将此 csv jar 文件添加到其中并按照上述步骤操作。

【讨论】:

    【解决方案4】:

    您应该对Class.forName() 使用 FQCN(完全限定的类名)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2014-10-26
      相关资源
      最近更新 更多