A while back i face the same problem…
In the end i did need to use a more modern VM to handle the actual data loading however the microsoft VM was able to load in the classes that i specified, just not the data used by the applet.
The applet in all its bad gui design horror:
www.geocities.com/budgetanime/page8.html
This is the code i used:
(uncommented and meaningless variable names… yay me!)
You will also need to cull large sections related to the loading of the data.
/*
* Created on 15/09/2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
/**
* @author klaebe
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
//public class OrderingAppletLoaderApp extends Frame
//{
// OrderingAppletLoader oal=new OrderingAppletLoader();
public class OrderingAppletLoader extends Applet
{
Object root;
TextArea ta;
java.lang.Class loader;
java.lang.Class orderingApplet;
boolean loaded;
int totalLines;
int lineCount;
Updater updater;
String oldText;
Panel cards;
//boolean next;
//Timer timer;
Object a;
LoaderThread loaderThread;
boolean asApplet;
public OrderingAppletLoader()
{
}
public void init()
{
cards=new Panel(new CardLayout());
Panel p =new Panel();
//p.setSize(640,480);
ta=new TextArea();
//ta.append("YO!");
p.setLayout(new GridLayout(1,1));
setLayout(new GridLayout(1,1));
p.add(ta);
cards.add("Main",p);
loaded=false;
totalLines=1;
lineCount=1;
updater=new Updater(this);
/// timer=new Timer();
//repaint(1);
asApplet=true;
loaderThread=new LoaderThread(this);
}
public void start()
{
root=this;
((Applet) root).add(cards);
// process();
(new Thread(loaderThread,"LoaderThread")).start();
}
public static void main(String[] args)
{
Frame frame= new Frame();
frame.setSize(640,480);
OrderingAppletLoader oal=new OrderingAppletLoader();
oal.root=frame;
oal.init();
((Frame) oal.root).add(oal.cards);
frame.setVisible(true);
Loader loader =new Loader();
oal.asApplet=false;
loader.init(oal);
loader.loadSeries();
while (loader.str!=null) loader.loadSeries();
loader.loadOST();
while (loader.str!=null) loader.loadOST();
loader.loadMovies();
while (loader.str!=null) loader.loadMovies();
OrderingApplet aa= new OrderingApplet();
Panel p1=new Panel(new GridLayout(1,1));
p1.add((Component) aa);
oal.cards.add("Applet",p1);
aa.setup(loader);
aa.init();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
((CardLayout) oal.cards.getLayout()).show(oal.cards,"Applet");
}
public void runApplet(Object a)
{
try
{
Object aa =orderingApplet.newInstance();
Panel p1=new Panel(new GridLayout(1,1));
p1.add((Component) aa);
cards.add("Applet",p1);
Class[] ee=new Class[1];
ee[0]=loader;
Object[] dd= new Object[1];
dd[0]=a;
java.lang.reflect.Method bb=orderingApplet.getMethod("setup",ee);
Object cc =bb.invoke(aa,dd);
bb=orderingApplet.getMethod("init",null);
cc =bb.invoke(aa,null);
((CardLayout)cards.getLayout()).show(cards,"Applet");
}
catch (Exception e)
{
System.out.println(e);
e.printStackTrace();
//System.out.println(e.);
}
//System.out.println("2");
}
}
class LoaderThread implements Runnable
{
OrderingAppletLoader oal;
public LoaderThread(OrderingAppletLoader oal1)
{
oal=oal1;
}
public void run()
{
oal.ta.append("Loading Loader Class...");
try
{
oal.loader=getClass().getClassLoader().loadClass("Loader");
oal.ta.append("DONE\r\n");
}
catch (Exception e)
{
oal.ta.append (" NOT FOUND!!!!\r\n");
System.out.println(e);
}
oal.ta.append("Loading OrderingApplet Class...");
try
{
oal.orderingApplet=getClass().getClassLoader().loadClass("OrderingApplet");
oal.ta.append("DONE\r\n");
}
catch (Exception e)
{
oal.ta.append (" NOT FOUND!!!!\r\n");
System.out.println(e);
}
// oal.ta.append("Classes loaded: ");
oal.oldText=oal.ta.getText();
// (new Thread(timer,"Governor1")).start();
try
{
oal.a =oal.loader.newInstance();
Class[] e=new Class[1];
e[0]=oal.getClass();
Object[] d= new Object[1];
d[0]=oal;
java.lang.reflect.Method b=oal.loader.getMethod("init",e);
Object c =b.invoke(oal.a,d);
b=oal.loader.getMethod("loadSeries",null);
c =b.invoke(oal.a,null);
java.lang.reflect.Field f=oal.loader.getDeclaredField("totalLines");
oal.totalLines=f.getInt(oal.a);
f=oal.loader.getDeclaredField("str");
String str=(String) f.get(oal.a);
f=oal.loader.getDeclaredField("lineCount");
oal.lineCount=f.getInt(oal.a);
//oal.ta.setText(oal.oldText);
//oal.ta.append("DONE\r\n");
oal.ta.append("Series Data: ");
oal.oldText=oal.ta.getText();
// System.out.println("1b");
(new Thread(oal.updater,"Governor")).start();
while (str!=null)
{
c =b.invoke(oal.a,null);
f=oal.loader.getDeclaredField("str");
str=(String) f.get(oal.a);
f=oal.loader.getDeclaredField("lineCount");
oal.lineCount=f.getInt(oal.a);
//repaint(1);
}
str=null;
b=oal.loader.getMethod("loadMovies",null);
c =b.invoke(oal.a,null);
f=oal.loader.getDeclaredField("totalLines");
oal.totalLines=f.getInt(oal.a);
f=oal.loader.getDeclaredField("str");
str=(String) f.get(oal.a);
f=oal.loader.getDeclaredField("lineCount");
oal.lineCount=f.getInt(oal.a);
oal.ta.setText(oal.oldText);
oal.ta.append("DONE\r\n");
oal.ta.append("Movie Data: ");
oal.oldText=oal.ta.getText();
// System.out.println("1c");
while (str!=null)
{
c =b.invoke(oal.a,null);
f=oal.loader.getDeclaredField("str");
str=(String) f.get(oal.a);
f=oal.loader.getDeclaredField("lineCount");
oal.lineCount=f.getInt(oal.a);
// repaint(1);
}
str=null;
b=oal.loader.getMethod("loadOST",null);
c =b.invoke(oal.a,null);
f=oal.loader.getDeclaredField("totalLines");
oal.totalLines=f.getInt(oal.a);
f=oal.loader.getDeclaredField("str");
str=(String) f.get(oal.a);
f=oal.loader.getDeclaredField("lineCount");
oal.lineCount=f.getInt(oal.a);
oal.ta.setText(oal.oldText);
oal.ta.append("DONE\r\n");
oal.ta.append("OST Data: ");
oal.oldText=oal.ta.getText();
/// System.out.println("1d");
while (str!=null)
{
c =b.invoke(oal.a,null);
f=oal.loader.getDeclaredField("str");
str=(String) f.get(oal.a);
f=oal.loader.getDeclaredField("lineCount");
oal.lineCount=f.getInt(oal.a);
// repaint(1);
}
str=null;
oal.ta.setText(oal.oldText);
oal.ta.append("DONE\r\n");
oal.loaded=true;
}
catch (Exception e)
{
System.out.println(e);
e.printStackTrace();
//System.out.println(e.);
}
//System.out.println("1");
}
}
class Updater implements Runnable
{
OrderingAppletLoader oal;
public Updater(OrderingAppletLoader oal1)
{
oal=oal1;
}
public synchronized void run()
{
while (!oal.loaded)
{
String temp=""+oal.oldText;
temp=temp+(""+((((float) oal.lineCount)/oal.totalLines)*100)+"%\r\n" );
oal.ta.setText(temp);
//oal.repaint(10);
try
{
wait(500);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
oal.runApplet(oal.a);
}
}