Avatar billede jsi Nybegynder
18. maj 2002 - 10:13 Der er 8 kommentarer og
1 løsning

Ved du noget om denne fejl?!

Internal Servlet Error:

org.apache.jasper.JasperException: Unable to compile C:\unzipped\jakarta-tomcat-3.3.1\jakarta-tomcat-3.3.1\work\DEFAULT\ROOT\x\Helle2_2.java:60: Class sock.WebServer not found.
                    sock.WebServer server = null;
                        ^
C:\unzipped\jakarta-tomcat-3.3.1\jakarta-tomcat-3.3.1\work\DEFAULT\ROOT\x\Helle2_2.java:63: Class sock.WebServer not found.
                        server= (sock.WebServer)
                                    ^
C:\unzipped\jakarta-tomcat-3.3.1\jakarta-tomcat-3.3.1\work\DEFAULT\ROOT\x\Helle2_2.java:68: Class sock.WebServer not found.
                              server = (sock.WebServer) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "sock.WebServer");
                                            ^
3 errors

    at org.apache.tomcat.facade.JasperLiaison.javac(JspInterceptor.java:898)
    at org.apache.tomcat.facade.JasperLiaison.processJspFile(JspInterceptor.java:733)
    at org.apache.tomcat.facade.JspInterceptor.requestMap(JspInterceptor.java:506)
    at org.apache.tomcat.core.ContextManager.processRequest(ContextManager.java:968)
    at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:875)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
    at org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10Interceptor.java:176)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
Avatar billede jakoba Nybegynder
18. maj 2002 - 11:04 #1
pakken sock ligger ikke i din classpath. Prøv at lede på din computer efter en mappe der hedder sock, om du overhovedet har den. og om den indholder en klasse "WebServer" stavet præcis sådan.
Avatar billede soelvpil Nybegynder
18. maj 2002 - 13:29 #2
Hvis din jsp-fil ligger i tomcat/webapps/defaultroot/Hejje.jsp

skal javaklassen være placeret i
tomcat/webapps/defaultroot/web-inf/classes/sock/WebServer.class
Avatar billede jsi Nybegynder
18. maj 2002 - 17:12 #3
den hjælp men nu får jeg
java.net.SocketException: connect (code=10061)

    at java.net.PlainSocketImpl.socketConnect(Native Method)

    at java.net.PlainSocketImpl.doConnect(Unknown Source)

    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

    at java.net.PlainSocketImpl.connect(Unknown Source)

    at java.net.Socket.<init>(Unknown Source)

    at java.net.Socket.<init>(Unknown Source)

    at ChatApplet.run(ChatApplet.java:44)

    at java.lang.Thread.run(Unknown Source)

//klient/applet skal igennem sockets input stream
lytte på port 7787 og får chat beskeder ( fra jsp side igennem bean
som opretter en tråd med socket til at sende beskeder
Avatar billede soelvpil Nybegynder
18. maj 2002 - 19:27 #4
Hvordan ser den kode ud, der genererer fejlen?
Avatar billede jsi Nybegynder
18. maj 2002 - 23:01 #5
her er appleten://tak for hjælpen
import java.net.*;
import java.io.*;
import java.awt.*;
import java.applet.*;



public class ChatApplet extends Applet implements Runnable {
  protected DataInputStream i;
  protected DataOutputStream o;

  protected TextArea output;
// protected TextField input;

  protected Thread listener;

  public void init () {
    setLayout (new BorderLayout ());
    add ("Center", output = new TextArea ());
    output.setEditable (false);
    //add ("South", input = new TextField ());
    //input.setEditable (false);
  }

  public void start () {
    listener = new Thread (this);
    listener.start ();
  }

  public void stop () {
    if (listener != null)
      listener.stop ();
    listener = null;
  }

  public void run () {
    try {
         
        //String host = getCodeBase ().getHost ();
        InetAddress adresse = InetAddress.getLocalHost();
        int serverPort = 7787;
   
      Socket s = new Socket (adresse.getHostAddress(),serverPort);
      i = new DataInputStream (s.getInputStream ());
      o = new DataOutputStream (s.getOutputStream ());
      output.appendText (" connected.\n");
    // input.setEditable (true);
      //input.requestFocus ();
      execute ();
    } catch (IOException ex) {
      ByteArrayOutputStream out = new ByteArrayOutputStream ();
      ex.printStackTrace (new PrintStream (out));
      output.appendText ("\n" + out);
    }
  }

  public void execute () {
    try {
      while (true) {
                String line = i.readUTF();
                System.out.println("receved"+line);
                output.appendText (line + "\n");
      }
    } catch (IOException ex) {
      ByteArrayOutputStream out = new ByteArrayOutputStream ();
      ex.printStackTrace (new PrintStream (out));
      output.appendText (out.toString ());
    } finally {
      listener = null;
    // input.hide ();
      validate ();
      try {
        o.close ();
      } catch (IOException ex) {
        ex.printStackTrace ();
      }
    }
  }}
jsp side:
<html>
<head>
<%@ page language="java"%>
<jsp:useBean id="server" scope="application" class="sock.WebServer" />

<!--jsp:setProperty name="server" property="*" /-->
<!--jsp:setProperty name="server" property="besked" value="WELCOM TO CHAT"/-->

</head>

<% server.init(); %>
<table border="1" width="100%" height="180">
  <tr>
    <td width="24%" bgcolor="#FF00FF" style="border-style: groove; border-width: 5" align="center" height="38"><img border="0" src="byvaaben1x1.gif" width="48" height="55"></td>
    <td width="48%" style="border-left-style: solid; border-right-style: groove" align="center" height="38">
      <font size="5" face="Algerian" color="#9999FF"><span style="background-color: #FFFFFF">Welcome to HelleTalk</span></font>
   
    </td>
    <td width="28%" style="border-style: groove; border-width: 5" align="center" height="40" bgcolor="#CCFFFF"><img border="0" src="byvaaben1x1.gif" width="48" height="50"></td>
  </tr>
 
  <tr>
    <td width="24%" bgcolor="#FF00FF" style="border-style: groove; border-width: 5" align="center" height="260"><font color="#000066" size="4">log
      ind</font>
      <p><font color="#000066" size="4">log af</font></td>
    <td width="48%" style="border-style: groove; border-width: 5" align="center" height="260"><center>
<jsp:plugin type="applet"
code="ChatApplet.class"
codebase="/x/"
jreversion="1.2"
width="350" height="380">
</jsp:plugin>
  </center></td>
    <td width="28%" style="border-style: groove; border-width: 5" align="center" height="260" bgcolor="#CCFFFF"><font size="4">on-line</font>
      <p><font size="4">opret chatroom</font></p>
      <p><font size="4">chatrooms:</font></p>
      <p><font size="4">inviter brugere</font></td>
  </tr>
</table>

<p><font size="5"><form method=post action="Helle2.jsp">
<input type="text" name="besked" size="66">
<jsp:setProperty name="server" property="besked" />
</font><input type="submit"
value="Send besked" name="B1"
style="font-weight: bold; border-style: solid;
border-color: #0066FF"></form>

<p>

<br>
</html>
beans:
package sock;
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;
import java.beans.*;
public class WebServer
{
    private Room enChatRoom;
    private String besked="hej";
    private Vector chatRooms = new Vector();
   
    public void setBesked(String b)
    {
        besked = b;
        notifyRoom(besked);
    }
    public void init () {
        try{
            //int serverPort = 7787; // server port
            enChatRoom = new Room("Main","Administrator",false,null);
            chatRooms.addElement(enChatRoom);
            Listener listener = new Listener(enChatRoom);
            //ServerSocket listenSocket = new ServerSocket(serverPort);
            //while(true)
            // {
            //        Socket clientSocket = listenSocket.accept();
            //        enChatRoom.addClient(clientSocket);
                //Forbindelse c = new Forbindelse(clientSocket);
           
        } catch(Exception e) {System.out.println("Listen socket:"+e.getMessage());}
    }
    public void notifyRoom(String b)
    {
        enChatRoom.vidersend(b);
    }
}
class Room
{

    private String name = "";
    private String ejer = "";
    private boolean priv;
    private String password = "";
    private Vector brugere;
    private FileOutputStream chatLogStream;
    private Socket sc;
    private Forbindelse con;
    Room(String navn, String minEjer, boolean isPrivate,
            String minPassword)
    {
        name = navn;
        ejer = minEjer;
        priv = isPrivate;
        if (password != null)
          password = minPassword;
        brugere = new Vector();
    }

    public void addClient(Socket  newClient)
    {
        sc = newClient;
        //Connection con = new Connection(sc)
        brugere.addElement(sc);

   
    // c.entreRoom.setChatRoom(this);
    }
    public void vidersend(String s)
    {
        synchronized(brugere)
        {
        Iterator i = brugere.iterator();
        while (i.hasNext())
        {
            Socket sc = ((Socket)i.next());
        try
        {
            con = new Forbindelse(sc,s);
            //con.update(s);
        }
       
   
       
        catch (Exception ex)
        {
          //con.stop ();
        }
    }
}
}
    public void sletClient(Socket klient)
    {
   
        brugere.removeElement(klient);
    //    brugere.trimToSize();

   
        //klient.user.setChatRoom(null);
    }

   
    /*public void setLogging(boolean onOff)
    throws IOException
    {
    //luk eller åbn log in for room
   
    if (onOff)
        {
        // åbn log file
        File chatLogFile = new File(name + ".chatlog");
        chatLogStream = new FileOutputStream(chatLogFile);
        }
    else
        {
        // luk log file
        if (chatLogStream != null)
            {
            chatLogStream.close();
            chatLogStream = null;
            }
        }
           
    }

    protected void log(String logText)
    throws IOException
    {
    if (chatLogStream != null)
        {
        try {
            synchronized(chatLogStream)
            {
                byte[] bytes = logText.getBytes();
                chatLogStream.write(bytes);
            }
        }
        catch (IOException e) {
            chatLogStream.close();
            chatLogStream = null;
            throw(e);
        }
        }
    }

    protected void finalize()
    {
    // room er væk luk log file.
    try {
        chatLogStream.close();
    }
    catch (IOException e) {}
    }/*/
}

class Forbindelse extends Thread {
    private DataInputStream in;
    private DataOutputStream out;
    private Socket clientSocket;
    private String entreRoom;
    private String besked;
   
    public Forbindelse (Socket aClientSocket,String str) {
        try{
            clientSocket = aClientSocket;
            in = new DataInputStream( clientSocket.getInputStream());
            out =new DataOutputStream( clientSocket.getOutputStream());           
            besked = str;
            }catch (IOException e){}
            this.start();
       
    }
    /*public void update(String besked)
    {
        try{
            synchronized(out)
            {
                out.writeUTF(besked);
            }
                out.flush();
            }
        //    catch (IOException e){}
    }*/
    public void run()
    {
        try{
            while(true)
            {
                synchronized(out)
            {
                out.writeUTF(besked);
            }
                out.flush();
            }
    //    }    catch (IOException e){}
    //    try {   
               
        //        String data = "";
            //    System.out.println(clientSocket.getInetAddress());                       
            //    while(!data.equalsIgnoreCase("Quit") && data != "")
        //    while(true)
                {
        //            data = in.readLine();
                   

                }
                           
               
        }catch (EOFException e){System.out.println("EOF:"+e.getMessage());
        //}catch (InterruptedException  e){System.out.println("threds :"+e.getMessage());
        } catch(IOException e) {System.out.println("readline:"+e.getMessage());
        } finally{ try {clientSocket.close();}catch (IOException e){/*close failed*/}}
       

    }
}
class Listener extends Thread
{
    private int serverPort = 7787;
   
    private Room main;
   
        public Listener(Room main)
        {
            this.main = main;
            start();
        }
       
        public void run()
        {
            try
            {
            ServerSocket listenSocket = new ServerSocket(serverPort);
            while(true)
                {
                        Socket clientSocket = listenSocket.accept();
                        main.addClient(clientSocket);
                    //Connection c = new Connection(clientSocket);
                }
            } catch(IOException e) {System.out.println("Listen socket:"+e.getMessage());}
    }

}
Avatar billede soelvpil Nybegynder
18. maj 2002 - 23:50 #6
Jeg kan ikke umiddelbart se, hvorfor koden ikke burde kunne virke, det ser ok ud.

Du vil dog få problemer, anden gang du hitter siden, idet forbindelsen til serveren er optaget. Måske er det det, der sker?

Jeg vil foreslå først at prøve med at rette appletten, så dens socket bliver en instansvariabel. DU kan så fortsat åbne en forbindelse i start-metoden, og så prøve at lukke den igen i stop-metoden    socket.close();
Avatar billede jsi Nybegynder
19. maj 2002 - 19:41 #7
hvad mener du med at dens socket bliver en instansvariabel
er det ikke nu?
du får alligevel points da du har besvaret min oprindelige spørgsmål
Avatar billede soelvpil Nybegynder
19. maj 2002 - 22:49 #8
Mange tak.

Jeg mener at du bør lukke din socketforbindelse i din applet, når du er færdig med at bruge den.

En mulighed kunne være i stop-metoden, der så kan have en s.close();

Det kræver dog at stop-metoden kan se socket, dvs socket kan ikke længere kun være lokal inde i run-metoden, men skal kunne ses af alle metoder. Dette kan du selvfølgelig opnå ved at erklære s som en instansvariabel, dvs i starten af klassen have

private Socket s;
Avatar billede jsi Nybegynder
20. maj 2002 - 13:31 #9
hej soelvpil nu får jeg den der:
connected.
java.net.SocketException: Connection reset by peer: JVM_recv in socket input stream read

    at java.net.SocketInputStream.socketRead(Native Method)

    at java.net.SocketInputStream.read(Unknown Source)

    at java.net.SocketInputStream.read(Unknown Source)

    at java.io.DataInputStream.readUnsignedShort(Unknown Source)

    at java.io.DataInputStream.readUTF(Unknown Source)

    at ChatApplet.execute(ChatApplet.java, Compiled Code)

    at ChatApplet.run(ChatApplet.java:50)

    at java.lang.Thread.run(Unknown Source)

//dybt deprimerende ikke?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester