webForumDet fria alternativet

problem med egna klasser

1 svar · 260 visningar · startad av jme

jmeMedlem sedan maj 20011 967 inlägg
#1

Jag måste väl ta och köpa en J2EE bok för jag fattar inte detta...

Jag har klassen SQLTool som jag använder för att koppla upp mig mot en MySQL databas.

SQLTool ingår i package

utils.sql;

Sedan så har jag en annan klass, Message som kapslar in resultatet från en sql query.

Även denna klass ingår i

utils.sql;

SQLTool anropar jag från en .jsp sida genom

<jsp:useBean id="sql" class="utils.sql.SQLTool" scope="session"/>

Jag har metoden getForum() i SQLTool som returnerar ett objekt av typen Vector som innehåller Message objekt.

På .jsp sidan så vill jag ha följande sats:

Message message = (Message)vector.get(0)

Detta fungerar inte - får följande felmeddelande:

"utils.sql.Message is not public in utils.sql; cannot be accessed from outside package"

Jag fattar inte riktigt hur jag skall kunna använda egna klasser. Vad jag fattar så är SQLTool en s k JavaBean.

Jag försökte lägga ut Message genom att ange sökvägen till den i CLASSPATH. Detta fungerar med vanliga Java program.
Men på .jsp sidan så säger det att package xxx not found.

Om jag t ex vill använda klassen Vector så importerar jag java.util;

<%@ page import="java.util.*" %>

Varför kan jag då inte importera egna klasser på liknande sätt?

<%@ page import="jme.*" %>

Jag kan skriva import jme.*; i vanliga Java-program.

LimeMedlem sedan sep. 2001837 inlägg
#2

Hur ser utils.sql.Message ut och är deklarerad? En jsp-sida ligger alltid i default package (eller ibland i något eget paket med web-namnet som bas).

Det gör att om man har deklarerat något för protected så går det inte att accessa det utanför paketet eller subpaket.

Det går att göra import på egna klasser och det verkar som om du gör det eftersom den ger accessfel och inte "class not found".

Felet ligger nog i hur Messageklassen är deklarerad. Posta kod.

/Lime

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb