我正在尝试将已启用数据库的JSP添加到现有的Tomcat 5.5应用程序(GeoServer 2.0.0,如果有帮助的话).
该应用程序本身与Postgres谈话很好,所以我知道数据库已启动,用户可以访问它,所有这些好东西.我想要做的是在我添加的JSP中的数据库查询.我已经在Tomcat数据源示例中使用了配置示例,非常开箱即用.必要的taglibs位于正确的位置 - 如果我只有taglib refs就不会发生错误,因此它会找到那些JAR.postgres jdbc驱动程序postgresql-8.4.701.jdbc3.jar位于$ CATALINA_HOME/common/lib中.
这是JSP的顶部:
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<sql:query var="rs" dataSource="jdbc/mmas">
select current_validstart as ValidTime from runoff_forecast_valid_time
</sql:query>
Run Code Online (Sandbox Code Playgroud)
来自$ CATALINA_HOME/conf/server.xml的相关部分,其内部<Host>依次是<Engine>:
<Context path="/gs2" allowLinking="true">
<Resource name="jdbc/mmas" type="javax.sql.Datasource"
auth="Container" driverClassName="org.postgresql.Driver"
maxActive="100" maxIdle="30" maxWait="10000"
username="mmas" password="very_secure_yess_precious!"
url="jdbc:postgresql//localhost:5432/mmas" />
</Context>
Run Code Online (Sandbox Code Playgroud)
这些行是webapps/gs2/WEB-INF/web.xml中标记的最后一行:
<resource-ref>
<description>
The database resource for the MMAS PostGIS database
</description>
<res-ref-name>
jdbc/mmas
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
最后,例外:
exception
org.apache.jasper.JasperException: Unable …Run Code Online (Sandbox Code Playgroud) 我在Eclipse上设置了一个动态Web项目,我使用Tomcat 7作为我的Web服务器.它似乎没有自动将我添加到我的库中的第三方JAR放到我的构建路径上的WEB-INF/lib文件夹中.有没有办法可以自动完成?每次我寻找一个答案,我觉得像这样.
那我该怎么做呢?有没有办法配置我的构建路径来执行此操作?
这个问题可能在这里问了很多次.做了一些谷歌搜索上述错误并做了一些更新后,我无法理解为什么我仍然会收到该错误.我已经在类路径中放了我的驱动程序 - mysql-connector-java-5.1.5-bin:
Java_Home\jre\lib\
Java_Home\jre\lib\ext\
Java_Home\lib
Run Code Online (Sandbox Code Playgroud)
我用来连接mysql数据库的代码是:
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mail","root","");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select message_body from deadletter");
String dbtime;
while (rs.next()) {
dbtime = rs.getString(1);
System.out.println(dbtime);
}
con.close();
}
catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
以上异常的完整堆栈跟踪是:
java.lang.ClassNotFoundException: com.mysql.jdbc:Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at mail.main(mail.java:114)
Run Code Online (Sandbox Code Playgroud)
现在,我在这里做错了什么?
所以我已经弄清楚了我的错误,现在我只是在寻找一些关于究竟发生了什么的见解.我正在使用Apache Tomcat版本7.0.32.我正在使用本教程为JDBC设置池.在我的META-INF文件夹中,我创建了一个context.xml文件并将其放在那里.
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource type="javax.sql.DataSource" name="jdbc/gmustudent"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/official"
username="root" password="root"
maxActive="100" maxIdle="20" minIdle="15" initialSize="15" maxWait="10000" />
</Context>
Run Code Online (Sandbox Code Playgroud)
我写这篇文章时遇到了这个错误
WARNING: Unexpected exception resolving reference
java.sql.SQLException: com.mysql.jdbc.Driver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:699)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:631)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:485)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:143)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:539)
at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:237)
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1061)
at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:671)
at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:270)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at …Run Code Online (Sandbox Code Playgroud) 我有一个外部MySQL服务器,设置和工作正常.我在Eclipse中创建了一个数据库连接,可以在Data Source Explorer选项卡中查看数据库.
现在,我有一个需要访问该数据库的servlet.我该怎么做?有没有办法引用在数据源资源管理器中创建的数据库连接,还是我必须两次定义所有内容?
另外,打开连接的最佳方法是什么?我已经mysql-connector-java-5.1.11-bin.jar包含了该文件,并且我发现了两种有效的方法:
MysqlDataSource d = new MysqlDataSource();
d.setUser("user");
d.setPassword("pass");
d.setServerName("hostname.com");
d.setDatabaseName("db");
Connection c = d.getConnection();
Run Code Online (Sandbox Code Playgroud)
和
Connection c = DriverManager.getConnection("jdbc:mysql://hostname.com/db","user","pass");
Run Code Online (Sandbox Code Playgroud)
两者都不是最佳的,因为首先,它们都使用硬编码的字符串.这是一个Java EE Web应用程序项目,是否有一个放置连接数据的好地方?或者有没有办法放弃所有这些并只使用数据源资源管理器中的连接?
lib在项目中创建了一个文件夹并将jar放在那里.java.sql.SQLException: No suitable driver found for jdbc:mysql//localhost:3306/mysql我使用的是mysql 5.5代码:
package DBTest;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.*;
/**
* Servlet implementation class TenUsers
*/
@WebServlet("/TenUsers")
public class TenUsers extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String mySqlUrl = "jdbc:mysql://localhost:3306/mysql";
Properties userInfo = …Run Code Online (Sandbox Code Playgroud) 我应该如何添加JAR库在Eclipse中一个WAR项目没有遇到java.lang.ClassNotFoundException或java.lang.NoClassDefFoundError?
在CLASSPATH环境变量似乎并没有工作.在某些情况下,我们将JAR文件添加到Eclipse项目的Build Path属性中以使代码编译.我们有时需要将JAR文件放在/WEB-INF/libJava EE Web应用程序的文件夹中,以使代码在该JAR内的类上运行.
我不完全理解为什么CLASSPATH不起作用,在哪些情况下我们应该将JAR添加到Build Path以及何时应该放置这些JAR /WEB-INF/lib.
我在运行tomcat'java.lang.ClassNotFoundException:com.mysql.jdbc.Driver'时收到此错误.我正在使用Eclipse(Indigo,J2EE版本)/ Maven(m2e-wtp)/ Tomcat 7.0的组合.我已将此依赖项包含在我的pom文件中,用于我的Web应用程序(从头开始构建).
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我在'Problems'视图中没有得到任何编译错误,但是当我从'Servers'视图运行Tomcat服务器时,我得到了这些错误.它清楚地表明Tomcat无法找到Class并且它是classpath配置错误,我希望maven会处理这个问题.
我查看了与'java.lang.ClassNotFoundException:com.mysql.jdbc.Driver'相关的其他问题,但没有太多帮助.
我非常感谢任何帮助.
/**这是我加载驱动程序的方式*/
static {
DriverAdapterCPDS cpds_Customer = new DriverAdapterCPDS();
try { cpds_Customer.setDriver(productConfig.getProperty("dbcp.connection.customer.driver_class"));
} catch (ClassNotFoundException e) {
// log.error("setDriver Exception " + e);
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 所以我有一个MySQL JDBC驱动程序的.jar文件,它位于我的库源文件夹下,我有以下代码:
public static Connection getConnection() throws SQLException {
Connection conn = null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://50.56.81.42:3306/GUEST_BOOK";
String user = "user";
String password = "pass";
conn = (Connection) DriverManager.getConnection(url, user, password);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(InstantiationException e){
e.printStackTrace();
}catch(IllegalAccessException e){
e.printStackTrace();
}
return conn;
}
Run Code Online (Sandbox Code Playgroud)
但是,它总是给我这个错误:
INFO: Server startup in 645 ms
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at gbook.DbHelper.getConnection(DbHelper.java:14)
at gbook.DbHelper.getGuestBook(DbHelper.java:51)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:83)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) …Run Code Online (Sandbox Code Playgroud) 我最近开始使用JMeter在我的电脑上本地加载测试我的webapp.我有一个用于上传图像的jsp页面.图像由我的servlet处理.当我今天尝试这个过程时,我得到以下异常/错误:
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
org.apache.commons.fileupload.servlet.ServletFileUpload.isMultipartContent(ServletFileUpload.java:68)
spyder.servlets.imageProcessing.ImageProcessingServlet.uploadEditedImagesToDB(ImageProcessingServlet.java:527)
spyder.servlets.imageProcessing.ImageProcessingServlet.doPost(ImageProcessingServlet.java:153)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Run Code Online (Sandbox Code Playgroud)
这是我的servlet中的异常所引用的代码 -
boolean isPart = ServletFileUpload.isMultipartContent(req);
Run Code Online (Sandbox Code Playgroud)
....是的,我已经import在课堂上提出了所有必要的陈述.
我不记得对我的系统上的任何会导致此问题的任何更改.这个过程总是运行没有任何问题,所以我不明白是什么导致它现在这样失败.我认为,在我使用JMeter之后失败了......