JAR! . . .What is it good for?. . .Absolutely nothing :-)
Hi,
Well not quite; actually love JAR files, but why does the AppletViewer (W2K
SUN JDK "something", at least) insist on asking for the .CLASS file *as well
as* the .JAR file?
Is this *all* applet viewers? *all* html? or just something *my* code is
doing?
Also why are there no hits on "noclassdeffounderror" on SUN's website?
In the attached *very short* code snippet, the EmpApplet class is attempting
to invoke methods in the EmpClient class that has been built into the same
JAR file, but the only Typing that I can see (sorry not my code, but I'm
told this works on UNIX browsers) is: -
EmpClient client;
I'm guessing that this declares "client" as an instance of the EmpClient
class, but doesn't EmpClient have to be Imported or something? Either way,
EmpClient is not "inited" and the -debug gives me the noclassdeffounderror
and the browser makes no attempt to load EmpClient from the codebase.
So, how does one define a class? import?
Yes, I will google tomorrow but it's late and I'm old. . .
Regards Richard Maher
PS. Sorry for the school boy questions, but I honestly am RTFMing as well.
EmpClient Class
===========
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class EmpClient {
public static final String HOSTCHARSET="ISO-8859-1";
public static final byte [] CRLF = {'\r','\n'};
private Socket socket;
private String host;
private int port;
private BufferedReader in;
private OutputStream out;
public class Message
{
String type;
String message;
Message (String type , String message)
{
this.type = type;
this.message = message;
}
public String getMessage()
{
return message;
}
public String getType()
{
return type;
}
}
EmpClient (String host , int port)
{
this.host = host;
this.port = port;
}
public void open () throws UnknownHostException, IOException
{
socket = new Socket (InetAddress.getByName(host) , port);
in = new BufferedReader (new InputStreamReader (socket.getInputStream() ,
HOSTCHARSET));
out = new BufferedOutputStream (socket.getOutputStream());
}
public void close () throws IOException
{
try {
sendMessage ("99","");
} catch (IOException e) {
// close in any situation!
}
socket.close();
}
public void sendMessage (String type , String message) throws IOException
{
byte [] msgtype = type.getBytes(HOSTCHARSET);
byte [] msg = message.getBytes(HOSTCHARSET);
out.write(msgtype);
out.write(msg);
out.write(CRLF);
out.flush();
}
public Message readMessage () throws IOException
{
String wholemsg = in.readLine();
String type = wholemsg.substring(0,2);
String msg = wholemsg.substring(2);
return new Message (type , msg);
}
public void initEmployeeRead (String employee) throws IOException
{
sendMessage ("20" , employee);
}
public String readNextEmployee () throws IOException
{
Message msg = readMessage ();
if (msg.getType().equals("21"))
return msg.getMessage().trim();
return null;
}
}
EmpApplet Class
============
import java.applet.Applet;
import java.io.IOException;
public class EmpApplet extends Applet {
EmpClient client;
public void init ()
{
String host = getParameter("HOST");
int port = Integer.parseInt(getParameter ("PORT"));
client = new EmpClient (host , port);
try {
client.open();
} catch (Exception e) {
client = null;
}
}
public String initEmployee (String employee)
{
try {
client.initEmployeeRead(employee);
return null;
} catch (IOException e) {
return e.getMessage();
}
}
public String nextEmployee ()
{
try {
return client.readNextEmployee();
} catch (IOException e) {
return null;
}
}
public void destroy() {
try {
client.close();
} catch (IOException e) {
}
super.destroy();
}
}