【问题标题】:ClassNotFoundException: BasicDataSourceFactoryClassNotFoundException: BasicDataSourceFactory
【发布时间】:2013-01-20 16:53:41
【问题描述】:

我有一个 JAVA 应用程序,可以在 Tomcat7 上的本地 Windows7 环境中正常运行。我正在尝试在 Linux 环境中将其投入生产。 一切都已完成并且工作正常,除非我的应用程序尝试访问数据库。不涉及数据库的操作,它工作正常。 我得到的错误是

java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

这个类是tomcat-dbcp.jar 的一部分。这放在我的 $CATALINA_HOME/lib 文件夹中。为什么这个还没有收到?请帮忙!

更新:我还打开了 .jar 文件并进行了检查。 org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.class 文件存在。

【问题讨论】:

  • 你确定CATALINA_HOME是正确的吗?
  • 差不多...当我回显 $CATALINA_HOME 时,我得到了安装它的 tomcat 目录的路径 /installables/apache-tomcat-7.0.35 我可以用其他方式检查它吗?跨度>
  • 您的类路径中是否有可能存在重复项?
  • 容器是否有tomcat-dbcp.jar文件的读取权限?

标签: java linux tomcat classpath classnotfoundexception


【解决方案1】:

终于可以破解了。我的错误 - 我只依靠 echo $CATALINA_HOME 来检查它的位置。事实证明,这可能会产生误导。 最好用

ps aux | grep catalina

在输出中查找 catalina.base 和 catalina.home。这些变量前面给出的路径是从中获取 Tomcat 库的路径。我已经完成了默认安装,并在 /usr/share/tomcat7 下找到了这些库。事实证明,使用 yum 完成的默认安装没有提供 tomcat-dbcp.jar 文件。相反,它提供了 commons-dbcp.jar。阅读tomcat-dbcp vs commons-dbcp

更改 usr/share/tomcat7 文件夹下的 lib 文件需要我使用 sudo bash。您还可能注意到 /usr/share/tomcat7 下的 lib 文件夹是一个 simlink。只需执行 ls /usr/share/tomcat7 -l 即可获取父位置。您将只能在父位置进行更改。 可以检查 server.xml 的类似内容,该文件最终也是从 /usr/share/tomcat7 本身中挑选出来的。

管理所有这些的最佳方式是创建您自己的模拟链接,这样您在第一次之后就无需费心去不同的位置。

感谢所有尝试提供帮助的人。

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 2019-03-07
    • 2017-01-10
    • 2023-03-16
    • 2018-12-23
    • 2021-03-22
    • 2014-04-18
    • 2011-12-17
    相关资源
    最近更新 更多