webForumDet fria alternativet

The type Connection is ambiguous

2 svar · 586 visningar · startad av swede

swedeMedlem sedan feb. 2004230 inlägg
#1

Jag får felmeddelandet "the type connection is ambiguous" för min servlet enligt nedan:

package core;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import java.sql.*;
import javax.sql.*;
import javax.naming.*;

import com.mysql.jdbc.*;

public class TestDatabase extends HttpServlet {

		DataSource pool;
		
		public void init() throws ServletException {
			try {
				Context env = (Context) new InitialContext().lookup("java:comp/env");
				pool = (DataSource) env.lookup("jdbc/test");
				
				if (pool == null) throw new ServletException("'jdbc/test' is a unknown datasource");
			} catch (NamingException e){
				throw new ServletException(e);
			}
		}
		
		public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
			res.setContentType("text/html");
			PrintWriter out = res.getWriter();
			
			[3][B]Connection conn = null;[/B][/3] 
			try {
				conn = pool.getConnection();
				
			} finally {
				try {
					if (conn != null) conn.close();
				} catch (SQLException e) {
				}
			}
		}
}

Jag kan inte för mitt liv begripa vad som är fel, eller vad felmeddelandet ens betyder.... Kan någon hjälpa mig?

/J

antilizaerMedlem sedan apr. 200357 inlägg
#2

Anledningen till att du får det är för att du iom att du kör med * på slutet i dina import satser så finns det två olika definitioner av klassen Connection, dels från java.sql.* paketet och dels från com.mysql.jdbc.*, vilket gör att kompilatorn inte fattar vilken typ av Connection klass som ska användas vid

Connection conn = null;

Jag föresår att du för alla importsatser bara importera de klasser som du behöver använda i klassen alltså utan * på slutet

import java.sql.Connection;
import java.sql.ResultSet;
....

eller så anger du vid deklarationen av Connection variabeln vilken klass som ska användas.

java.sql.Connection conn = null;

eller kanske att du från com.mysql.jdbc paketet kör med hela klassnamn vid importen:

java.sql.*
com.mysql.jdbc.KlassSomBehöver;
swedeMedlem sedan feb. 2004230 inlägg
#3

Tack!
Jag ska börja importera det jag behöver....

126 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)