任何人都可以提出任何建议来帮助我。我尝试过,尝试过阅读和阅读,但没有运气。
我正在开发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。
我很困惑。应该这么简单:(
感谢您的帮助。 米奇。
答案 0 :(得分:1)
解决。
Cloudfoundry命令提供给我的连接字符串" cf env MyApp"错了。
再次感谢所有帮助, 米奇。
答案 1 :(得分:0)
您的代码似乎是正确的,只需删除注释并在您的方法中放置一个throw子句(如果您只是单击错误标记并按照建议,eclipse将为您执行此操作) 如果找不到驱动程序并抛出异常,则应检查类路径。 我的建议是使用maven来管理项目依赖项。
答案 2 :(得分:0)
所以,你正在创造战争。只需用任何zip存档提取war文件,并确保你的战争中是Postgresql驱动程序文件?如果不是再次建立你的项目。
我认为您应该使用maven构建工具来添加依赖项并创建战争。