关于NoClassDefFoundError的奇怪郁闷头疼问题 具体问题及源代码参见我的blog:http://blog.sina.com.cn/u/3ca49af3010007jw我初步怀疑是jdk的bug,不知我的判断正不正确? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也有此问题,环境变量都设好了,还可通过javac classname.java,但就是不能通过java classname.这是什么原因啊,请朋友解答啊 你的脚本里面都把Bar.class文件都删除了,JVM当然找不到类啊 引用killhuore:你的脚本里面都把Bar.class文件都删除了,JVM当然找不到类啊请killhuore看清楚了,为什么"java -cp . Foo2"时没这个错误呢,这才是问题关键所在.请大家再仔细看看:http://blog.sina.com.cn/u/3ca49af3010007jw 这个问题跟java的变量(基本变量和对象)存储方式有关,Foo用到的是String(对象),是一个对象;Foo2用到的是int(基本变量),他们在内存的存放方式不一样,所以编译过程也就不一样。 给你用javap -verbose Foojavap -verbose Foo2得到的结果,很明显就能看出来原因了:1,Foo.....{public Foo(); Code: Stack=1, Locals=1, Args_size=1 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return LineNumberTable: line 13: 0public void test(java.lang.Object); Code: Stack=2, Locals=4, Args_size=2 0: ldc #2; //String a 2: astore_2 3: aload_2 4: ldc #2; //String a 6: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z 9: ifeq 20 12: aload_1**************注意点1****************** 13: checkcast #4; //class Bar 16: astore_3 17: goto 38 20: aload_2 21: ldc #5; //String b 23: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z 26: ifeq 35**************注意点2****************** 29: ldc #6; //String 31: astore_3 32: goto 38**************注意点3****************** 35: ldc #6; //String 37: astore_3 38: return LineNumberTable: line 15: 0 line 16: 3 line 17: 12 line 18: 17 line 19: 29 line 20: 32 line 21: 35 line 23: 38public static void main(java.lang.String[]); Code: Stack=2, Locals=1, Args_size=1 0: getstatic #7; //Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #8; //String ok... 5: invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return LineNumberTable: line 26: 0 line 27: 8} 2,Foo2..........{public Foo2(); Code: Stack=1, Locals=1, Args_size=1 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return LineNumberTable: line 13: 0public void test(java.lang.Object); Code: Stack=2, Locals=4, Args_size=2 0: ldc #2; //String a 2: astore_2 3: aload_2 4: ldc #2; //String a 6: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z 9: ifeq 20 12: aload_1**************注意点1****************** 13: checkcast #4; //class Bar 16: astore_3 17: goto 36 20: aload_2 21: ldc #5; //String b 23: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z 26: ifeq 34**************注意点2****************** 29: iconst_0 30: istore_3 31: goto 36**************注意点3****************** 34: iconst_0 35: istore_3 36: return LineNumberTable: line 15: 0 line 16: 3 line 17: 12 line 18: 17 line 19: 29 line 20: 31 line 21: 34 line 23: 36public static void main(java.lang.String[]); Code: Stack=2, Locals=1, Args_size=1 0: getstatic #6; //Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #7; //String ok... 5: invokevirtual #8; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return LineNumberTable: line 26: 0 line 27: 8} java 短信,MQ,邮箱框架。测试版本发布,提供下载 几个小问题 怎么控制JTable的显示大小? 如何实现JButton的按下下陷,再按下弹起效果???在线等待 引用变量做为参数传递的几个问题,刚学JAVA不久,看书看了很久,还是不明白,请大家帮个忙看一下 我的swithch语句错在哪里呢?还有我用什么办法得到系统当前的年份值呢? 请问pfx证书问题 Applet的乱码问题 介绍几本书好吗 用什么方法可以知道调用本类方法的上级类 java画平滑曲线问题??? 请教一个字符编码的问题
你的脚本里面都把Bar.class文件都删除了,JVM当然找不到类啊请killhuore看清楚了,为什么"java -cp . Foo2"时没这个错误呢,这才是问题关键所在.
请大家再仔细看看:
http://blog.sina.com.cn/u/3ca49af3010007jw
javap -verbose Foo
javap -verbose Foo2
得到的结果,很明显就能看出来原因了:
1,Foo
.....
{
public Foo();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 13: 0public void test(java.lang.Object);
Code:
Stack=2, Locals=4, Args_size=2
0: ldc #2; //String a
2: astore_2
3: aload_2
4: ldc #2; //String a
6: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z
9: ifeq 20
12: aload_1
**************注意点1******************
13: checkcast #4; //class Bar
16: astore_3
17: goto 38
20: aload_2
21: ldc #5; //String b
23: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z
26: ifeq 35
**************注意点2******************
29: ldc #6; //String
31: astore_3
32: goto 38
**************注意点3******************
35: ldc #6; //String
37: astore_3
38: return
LineNumberTable:
line 15: 0
line 16: 3
line 17: 12
line 18: 17
line 19: 29
line 20: 32
line 21: 35
line 23: 38public static void main(java.lang.String[]);
Code:
Stack=2, Locals=1, Args_size=1
0: getstatic #7; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #8; //String ok...
5: invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
LineNumberTable:
line 26: 0
line 27: 8}
..........
{
public Foo2();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 13: 0public void test(java.lang.Object);
Code:
Stack=2, Locals=4, Args_size=2
0: ldc #2; //String a
2: astore_2
3: aload_2
4: ldc #2; //String a
6: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z
9: ifeq 20
12: aload_1
**************注意点1******************
13: checkcast #4; //class Bar
16: astore_3
17: goto 36
20: aload_2
21: ldc #5; //String b
23: invokevirtual #3; //Method java/lang/String.equals:(Ljava/lang/Object;)Z
26: ifeq 34
**************注意点2******************
29: iconst_0
30: istore_3
31: goto 36
**************注意点3******************
34: iconst_0
35: istore_3
36: return
LineNumberTable:
line 15: 0
line 16: 3
line 17: 12
line 18: 17
line 19: 29
line 20: 31
line 21: 34
line 23: 36public static void main(java.lang.String[]);
Code:
Stack=2, Locals=1, Args_size=1
0: getstatic #6; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #7; //String ok...
5: invokevirtual #8; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
LineNumberTable:
line 26: 0
line 27: 8}