when I run my program (the important parts are down below) I
get an error saying "Can't invoke print: Illegal Argument
Exception...."
public ArrayList getMethodsList()
{
Method[] meths = Compiler.class.getMethods();
ArrayList output = new ArrayList();
for(int count = 0; count < meths.length; count++)
{
Class retType = meths[count].getReturnType();
Class[] para = meths[count].getParameterTypes
();
if(retType.equals(void.class) && para.length
== 3 &&
para[0].equals(String.class) && para
[1].equals(ArrayList.class)
&& para[2].equals
(StringLinizer.class))
output.add(meths[count]);
}
return output;
}
public void actionPerformed(ActionEvent a)
{
outputFrame.removeAll();
String s = input.getText(); //equals print 'some
string'
StringLinizer line = new StringLinizer(s);
ArrayList vars = new ArrayList();
String next = "";
String start = "";
while(line.hasNext())
{
next = line.next();
start = next.substring(0, next.indexOf(" "));
if(next.indexOf(" ") == -1 || start.indexOf
("(") != -1)
start = next.substring(0, next.indexOf
("("));
for(int count = 0; count < methods.size();
count++)
{
if(start.equals(((Method) methods.get
(count)).getName()))
{
try
{
String str =
next.substring(start.length());
((Method) methods.get
(count)).invoke(Compiler.class, new Object[] {str, vars, line});
}
catch (Exception e)
{
throw new
IllegalArgumentException("Can't invoke "+methods.get(count)+": "+e);
}
}
}
}
}
Just a quick note, a StringLinizer is like a StringTokenizer only it
breaks the String up into lines. Any help?