当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 我的java程序出现异常,到底是为什么?
帖子发表于 : 2008-11-24 14:08 
头像

注册: 2008-11-10 20:05
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
我的系统是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[i];
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[i];
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[i];
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)
请问这是什么原因?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 我的java程序出现异常,到底是为什么?
帖子发表于 : 2008-11-25 21:40 
头像

注册: 2008-11-10 20:05
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
补充一下。我的jsk设置应当是正确的,应为我运行其它的程序都是正确的。就是这个程序不正确。显示这个异常我很是纳闷,希望高手们指点一下。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 我的java程序出现异常,到底是为什么?
帖子发表于 : 2008-11-25 21:50 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10116
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 128
引用:
java.lang.NoClassDefFoundError: java.util.Scanner


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 我的java程序出现异常,到底是为什么?
帖子发表于 : 2008-11-26 9:16 
头像

注册: 2008-11-10 20:05
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
我知道了,ubuntu里面的jdk默认的是1。5。0 .需要修该一下连接文件。也就是系统中有两个JVM实现,而且gij JVM还被其它的Ubuntu工具或软件使用;所以这种情况下就得使用Debian提供的"update-alternatives"工具来完成程序多版本实现的选择了:
sudo update-alternatives --display java
发现系统只列举了gij JVM;因为jdk5是通过手动解压安装的。
现在输入下面的两行命令:
sudo update-alternatives --install /usr/bin/java java /etc/jdk/jdk1.6.0_10/bin/java 60
sudo update-alternatives --install /usr/bin/java java /usr/bin/gij-4.2 40
注意1,2行尾的60,40是优先级;现在把JDK5设为了首选;
输入: ls -l /etc/alternatives/java 发现JVM已经指向了jdk5的解压目录:
lrwxrwxrwx 1 root root 35 2008-01-25 17:55 /etc/alternatives/java ->
/etc.jdk/jdk1.6.0_10/bin/java
现在再执行:java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 我的java程序出现异常,到底是为什么?
帖子发表于 : 2009-11-24 21:52 
头像

注册: 2008-10-11 4:11
帖子: 276
地址: 瑞金无线电学校
送出感谢: 0 次
接收感谢: 0 次
楼上正解。应该用java6的解释器和编译器。

Scanner类在java5和java6中的情形是不同的。

也可参这里“http://wiki.ubuntu.org.cn/Qref/More#JAVA_.E7.8E.AF.E5.A2.83.E9.85.8D.E7.BD.AE.E5.8F.8A.E7.9B.B8.E5.85.B3
其中‘设置当前默认的java解释器和编译器’。


_________________
You never know if you don't try


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译