未处理的异常类型ClassNotFoundException

时间:2016-04-25 10:53:11

标签: java compiler-errors unhandled-exception

任何人都可以提出任何建议来帮助我。我尝试过,尝试过阅读和阅读,但没有运气。

我正在开发Windows 7。

我在Eclipse Java EE IDE中工作。

我正在运行Java Version 8 update 77(build 1.8.0_77-b03)。

我有一个Postgres数据库并在Cloudfoundry上正常运行(版本是PostgreSQL 9.4.5)。

我可以使用php进行互动。

我想通过Java servlet与它进行交互。

我的servlet一直运行良好。 所以现在我想添加postgres功能。

我从PostgreSQL JDBC Driver donwload page下载了JDBC42 Postgresql驱动程序,版本9.4-1208。我选择这个,因为它说“它支持Postgresql 7.2或更新,需要1.6或更新的JVM”

我将此jar文件添加到项目的WEB_INF \ lib文件夹中。 我右键单击它并确保将其添加到构建路径中。 (现在它也出现在MyServletProject \ Java Resources \ Libraries \ Web App Libraries下)。

我的servlet中有一个简单的方法:(字符串 jdbc_uri 是Cloudfoundry为响应 cf env MyAppName 中的命令而提供给我的字符串> jdbc_uri 字段)

       import java.sql.Connection;
       import java.sql.DriverManager;
       import java.sql.SQLException;

。 。 。 。

        String szMethod = request.getParameter("method");

        Connection dbcon = null;
        try
        {
            //Class.forName("org.postgresql.Driver");

            dbcon = DriverManager.getConnection(jdbc_uri,"DBusername","DBpassword");
        }
        catch (SQLException e)
        {
            szMethod = e.getMessage();
        }

        response.setContentType("text/html");

        response.getWriter().write(szMethod);

如果我在云代工厂运行这个(我从eclipse导出为.war文件,然后上传到云代工厂,我有一个执行此servlet的HTML按钮)我收到以下消息:

没有为jdbc找到合适的驱动程序:postgres://等等。

你会注意到我已经注释掉了这一行:

的Class.forName( “org.postgresql.Driver”);

因为如果我将它包含在Eclipse中,我会在IDE中出现一条波浪形的红线,如果我将鼠标悬停在上面,则上下文菜单会显示:

未处理的异常类型ClassNotFoundException。

我很困惑。应该这么简单:(

感谢您的帮助。 米奇。

3 个答案:

答案 0 :(得分:1)

解决。

Cloudfoundry命令提供给我的连接字符串" cf env MyApp"错了。

再次感谢所有帮助, 米奇。

答案 1 :(得分:0)

您的代码似乎是正确的,只需删除注释并在您的方法中放置一个throw子句(如果您只是单击错误标记并按照建议,eclipse将为您执行此操作) 如果找不到驱动程序并抛出异常,则应检查类路径。 我的建议是使用maven来管理项目依赖项。

答案 2 :(得分:0)

当类在类路径中不可用时,会出现ClassNotFoundException。

所以,你正在创造战争。只需用任何zip存档提取war文件,并确保你的战争中是Postgresql驱动程序文件?如果不是再次建立你的项目。

我认为您应该使用maven构建工具来添加依赖项并创建战争。

相关问题