webForumDet fria alternativet

Fel vid kompliering - hur fixa?

Java

8 svar · 500 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1
addinfo.java:5: package javax.servlet does not exist
import javax.servlet.*;
^
addinfo.java:6: package javax.servlet.http does not exist
import javax.servlet.http.*;
^
addinfo.java:8: cannot resolve symbol
symbol  : class HttpServlet 
location: class addinfo
public class addinfo extends HttpServlet {
                             ^
addinfo.java:10: cannot resolve symbol
symbol  : class HttpServletRequest 
location: class addinfo
    public void doPost(HttpServletRequest request, HttpServletResponse res)
                       ^
addinfo.java:10: cannot resolve symbol
symbol  : class HttpServletResponse 
location: class addinfo
    public void doPost(HttpServletRequest request, HttpServletResponse res)
                                                   ^
addinfo.java:11: cannot resolve symbol
symbol  : class ServletException 
location: class addinfo
    throws IOException, ServletException
                        ^
addinfo.java:16: cannot resolve symbol
symbol  : variable response 
location: class addinfo
        catch (Exception E) { response.setContentType("text/html");
                              ^
addinfo.java:17: cannot resolve symbol
symbol  : variable response 
location: class addinfo
        PrintWriter out = response.getWriter();
                          ^
addinfo.java:35: cannot resolve symbol
symbol  : variable response 
location: class addinfo
                        response.sendRedirect("/labb_jsp/index.jsp");
                        ^
addinfo.java:39: cannot resolve symbol
symbol  : variable out 
location: class addinfo
         out.println("SQLException: " + E.getMessage());
         ^
10 errors

*mummel*

hur in i hela fridens namn skall jag få detta att funka? :q

import java.net.*;
import java.util.*;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class addinfo extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse res)
    throws IOException, ServletException
    {
		try{
			Class.forName("com.mysql.jdbc.Driver").newInstance();
		}
	catch (Exception E) { response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("<head>");
        out.println("<title>Unable to load driver.</title>");
        out.println("</head>");
        out.println("<body>");
		out.println("Unable to load driver.");
        out.println("</body>");
        out.println("</html>");
	
	// 	E.printStackTrace();
	}
	
	try{
		Connection C = DriverManager.getConnection("jdbc:mysql://localhost:3306/laborationer?user=xxx&password=xxx");
			Statement S = C.createStatement();
			S.executeUpdate("INSERT INTO labb1(sNamn, iTfn) VALUES('"+ request.getParameter("sNamn") +"','"+request.getParameter("iTfn")+"')");
			response.sendRedirect("/labb_jsp/index.jsp");
			C.close();
	}
     catch (Exception E) {
	 out.println("SQLException: " + E.getMessage());
     }
 }
}

Så ser koden ut, är säkert helt åt *pip* ... :e

Medlem sedan aug. 20039 340 inlägg
#2

Jag tror du får uppgradera din utvecklingsmiljö

Medlem sedan nov. 20014 054 inlägg
#3

nitro2k01 skrev:

Jag tror du får uppgradera din utvecklingsmiljö

okei!

Vilka tänkbara program behövs för detta skulle du tro? :)

Medlem sedan juni 2003372 inlägg
#4

Ser ut som att du har missat att ta med en eller flera jar filer i classpathen. Lättast är nog att ta med sökvägen till rätt lib från den app server du använder.

Medlem sedan nov. 20014 054 inlägg
#5

Aleph_One skrev:

Ser ut som att du har missat att ta med en eller flera jar filer i classpathen. Lättast är nog att ta med sökvägen till rätt lib från den app server du använder.

oki :) får kolla upp detta och testa igen! :D

Medlem sedan aug. 20021 752 inlägg
#6

Om du har laddat ner J2EE från Sun så är det j2ee.jar (ligger i j2ee lib katalogen) som du ska ha i din classpath, om du bara har laddat ner t.ex. Tomcat så är det servlet-api.jar som du ska lägga i din classpath, ligger under katalogen "common\lib".

/Viktor

Medlem sedan maj 20012 237 inlägg
#7

Är det en äldre version av Tomcat, dvs < 5 så heter jar-filerna j2ee.jar om jag minns rätt. Med version 5 och uppåt så heter filen servlet-api.jar.

Medlem sedan aug. 20021 752 inlägg
#8

Re: Fel vid kompliering - hur fixa?

Så ser koden ut, är säkert helt åt *pip* ... :e

En kommentar om koden är att om du inte hittar klassen som du ska använda för att tala med databasen,

try{
	Class.forName("com.mysql.jdbc.Driver").newInstance();
}

så kommer du ändå att försöka skapa en koppling till databasen,

Connection C = DriverManager.getConnection("jdbc:mysql://localhost:3306/laborationer?
user=xxx&password=xxx");

eftersom du inte hoppar ur programmet efter att du har skrivit ditt fel medelande. Ett sätt kan vara att bara lägga till en return; i slutet av den första catch satsen. Ett annat kan vara att bara köra en try sats och i slutet fånga SQLException och ClassNotFoundException (tror jag det ska vara), om du får ett SQLException så är det något fel med SQL, får du ett ClassNotFoundException så finns inte databas drivrutinen.
Såhär,

public void doPost(HttpServletRequest request, HttpServletResponse res)
throws IOException, ServletException
{
	try{
		Class.forName("com.mysql.jdbc.Driver").newInstance();
		Connection C = DriverManager.getConnection("jdbc:mysql://localhost:3306/
                 laborationer?user=xxx&password=xxx");
		Statement S = C.createStatement();
		S.executeUpdate("INSERT INTO labb1(sNamn, iTfn) VALUES('"+ 
                      request.getParameter("sNamn")+"','"+request.getParameter("iTfn")+"')");
		response.sendRedirect("/labb_jsp/index.jsp");
		C.close();
	}
	catch (ClassNotFoundException cnfe)
	{
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("<head>");
		out.println("<title>Unable to load driver.</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("Unable to load driver.");
		out.println("</body>");
		out.println("</html>");
	}
	catch(SQLException sql)
	{
		out.println("SQLException: " + sql.getMessage());
	}
}

/Viktor

Medlem sedan nov. 20014 054 inlägg
#9

Tack så mycket Viktor. :)

Skall kolla igenom det där med servlet-api när jag kommer hem och kan testa. :) Man är ju lite ny ny för detta.. :D Tackar o bockar. :D

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)