我的java程序出现异常,到底是为什么?
发表于 : 2008-11-24 14:08
我的系统是ubuntu7.10, jdk1.6.0。可是我些的程序编译的时候是对的,但是运行就会出现异常。我的源程序是这样的:
package com.briup.ch07;
/**
the core java of page 187
*/
import java.util.*;
import java.lang.reflect.*;
public class ReflectionTest{
public static void main(String[] args){
String name;
if (args.length > 0) name = args[0];
else{
Scanner in = new Scanner(System.in);
System.out.println("Enter class name(e.g java.util.Date):");
name = in.next();
}
try{
Class cl = Class.forName(name);
Class supercl = cl.getSuperclass();
String modifiers = Modifier.toString(cl.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print("class" + name);
if(supercl != null && supercl!= Object.class)
System.out.print("extends" + supercl.getName());
System.out.print("\n{\n");
printConstructors(cl);
System.out.println();
printMethods(cl);
System.out.println();
printFields(cl);
System.out.println("}");
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
System.exit(0);
}
public static void printConstructors(Class cl){
Constructor[] constructors = cl.getDeclaredConstructors();
for(int i=0;i<constructors.length;i++){
Constructor c = constructors;
String name = c.getName();
System.out.print(" ");
String modifiers = Modifier.toString(c.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print(name + "(");
Class[] paramTypes = c.getParameterTypes();
for(int j = 0;j <paramTypes.length;j++) {
if(j>0) System.out.print(", ");
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
}
public static void printMethods(Class cl){
Method[] methods = cl.getDeclaredMethods();
for(int i =0;i<methods.length;i++){
Method m = methods;
Class retType = m.getReturnType();
String name = m.getName();
System.out.print(" ");
String modifiers = Modifier.toString(m.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print(retType.getName() + " " + name + "(");
Class[] paramTypes = m.getParameterTypes();
for(int j=0;j<paramTypes.length;j++ ){
if(j>0) System.out.print(",");
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
}
public static void printFields(Class cl){
Field[] fields = cl.getDeclaredFields();
for(int i =0;i<fields.length;i++ ){
Field f = fields;
Class type = f.getType();
String name = f.getName();
System.out.print(" ");
String modifiers = Modifier.toString(f.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print(type.getName() + " " + name + ";");
}
}
}
结果:Exception in thread "main" java.lang.NoClassDefFoundError: java.util.Scanner
at com.briup.ch07.ReflectionTest.main(ReflectionTest.java:14)
请问这是什么原因?
package com.briup.ch07;
/**
the core java of page 187
*/
import java.util.*;
import java.lang.reflect.*;
public class ReflectionTest{
public static void main(String[] args){
String name;
if (args.length > 0) name = args[0];
else{
Scanner in = new Scanner(System.in);
System.out.println("Enter class name(e.g java.util.Date):");
name = in.next();
}
try{
Class cl = Class.forName(name);
Class supercl = cl.getSuperclass();
String modifiers = Modifier.toString(cl.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print("class" + name);
if(supercl != null && supercl!= Object.class)
System.out.print("extends" + supercl.getName());
System.out.print("\n{\n");
printConstructors(cl);
System.out.println();
printMethods(cl);
System.out.println();
printFields(cl);
System.out.println("}");
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
System.exit(0);
}
public static void printConstructors(Class cl){
Constructor[] constructors = cl.getDeclaredConstructors();
for(int i=0;i<constructors.length;i++){
Constructor c = constructors;
String name = c.getName();
System.out.print(" ");
String modifiers = Modifier.toString(c.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print(name + "(");
Class[] paramTypes = c.getParameterTypes();
for(int j = 0;j <paramTypes.length;j++) {
if(j>0) System.out.print(", ");
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
}
public static void printMethods(Class cl){
Method[] methods = cl.getDeclaredMethods();
for(int i =0;i<methods.length;i++){
Method m = methods;
Class retType = m.getReturnType();
String name = m.getName();
System.out.print(" ");
String modifiers = Modifier.toString(m.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print(retType.getName() + " " + name + "(");
Class[] paramTypes = m.getParameterTypes();
for(int j=0;j<paramTypes.length;j++ ){
if(j>0) System.out.print(",");
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
}
public static void printFields(Class cl){
Field[] fields = cl.getDeclaredFields();
for(int i =0;i<fields.length;i++ ){
Field f = fields;
Class type = f.getType();
String name = f.getName();
System.out.print(" ");
String modifiers = Modifier.toString(f.getModifiers());
if(modifiers.length() > 0) System.out.print(modifiers + " ");
System.out.print(type.getName() + " " + name + ";");
}
}
}
结果:Exception in thread "main" java.lang.NoClassDefFoundError: java.util.Scanner
at com.briup.ch07.ReflectionTest.main(ReflectionTest.java:14)
请问这是什么原因?