一段非常简单代码出错了。不知各位有没有碰到过,我该如何解决?
不能再简单了。 一个空的Frame;用addWindowListener();处理windowClosing()事件;
FileName: BadWindowListener.java
===================================================================
import java.awt.*;
import java.awt.event.*;
public class BadWindowListener extends Frame {
public BadWindowListener() {
super("Cannot us addWindowListener(WindowAdapter)");
setSize(500,300);
setLocation(150,100);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setVisible(true);
}
public static void main(String[] args) {
new BadWindowListener();
}
}
------------------------------------------------------
D:\MyJava\Net>javac BadWindowListener.java
BadWindowListener.java:13: addWindowListener(java.awt.event.WindowListener) in
java.awt.Window cannot be applied to (<anonymous WindowAdapter>)
addWindowListener(new WindowAdapter() {
^
1 error
D:\MyJava\Net>
我在网上找了很久,只找到了一处;是德文的。看不懂;
http://www4.carookee.com/forum/demoskin/1/59162 一个论坛
http://www.worldlingo.com/wl/translate 德文翻译网站, (翻了也百翻)
在其他机器上应该是能执行的。我搞了很久。就是搞不定;
问题点数:100、回复次数:16Top
1 楼humanity(城市边缘的狼)回复于 2005-06-01 22:39:01 得分 5
你这个 WindowAdapter 是哪个包里面的? 检查一下, 新手最好 用 Eclipse 这样的 开发工具。
它的 代码编辑和源码查看很适合 新手。Top
2 楼horisly(SUN YAT-SEN UNIVERSITY (逸仙先生))回复于 2005-06-01 22:47:17 得分 5
Frame 不支持 匿名 WindowAdapter??
为什么不用JFrame呢??Top
3 楼cwjfzu(飘影)回复于 2005-06-01 23:20:35 得分 5
Frame可以支持
匿名WindowAdapter
我有写过
现在没环境看不出什么问题
找个Eclipse查一下什么问题
比在CSDN上问快多了Top
4 楼FBug(花知)回复于 2005-06-01 23:27:45 得分 0
TO: humanity(总是偷窥 Java & XML)
就是 java \ awt \ event \ WindowListener.java 。啊
D:\Program Files\Java\jdk1.5\src.zip 里面。用winrar打开它,是这样找吗?
我是新手;
我发现在最上面加一句:package ccc;就能编译了。
(BadWindowListener.java我放在 .\ccc\下面);
可是不能执行,结果如下:
D:\MyJava\ccc>javac BadWindowListener.java
D:\MyJava\ccc>java BadWindowListener
Exception in thread "main" java.lang.NoClassDefFoundError: BadWindowListener (wr
ong name: ccc/BadWindowListener)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
D:\MyJava\ccc>
Top
5 楼FBug(花知)回复于 2005-06-01 23:32:12 得分 0
每次编译的时候我都运行一个名叫 setPath.bat的文件,里面的内容为:
---------------------------------------------
path=%path%;D:\Program Files\Java\jdk1.5\bin
set classpath=%classpath%;.;D:\MyJava
cls
cmd
--------
和公司里面的是一样的。可我自己的机器就不能执行。还有就是。我在运行其他代码的时候(目前为止)没发现类似问题,比如说吧addWindowListener(new ....);删除后就没事了。
或则在做一步 implements ActionListener;在actionPerformed(){}里写方法关闭是能执行的。Top
6 楼FBug(花知)回复于 2005-06-01 23:44:45 得分 0
to cwjfzu(飘影):
Eclipse 用它是吗?
哦。那不是我换了开发环境了么?现在问题出现了。我感觉是出在开发环境下面;
因为公司的电脑和我的电脑都是用同一张盘的操作系统,开发平台也是从同一个地方下来的。
为什么我这里就不行。这个问题捆了我很长时间了。我就是搞它不定。
如果我改用Eclipse的话。我想这个问题不会有了。
我想学好,学精java。所以我一直用记事本写.
我的开发环境:
在java.sun.com里面下了个NetBeans5.0 那里带了个JDK1.5;
windows advanced server 2000Top
7 楼Goldrush(上天有好生之德)回复于 2005-06-02 00:27:48 得分 5
goodTop
8 楼FBug(花知)回复于 2005-06-02 08:47:03 得分 0
to: Goldrush
好?Top
9 楼FBug(花知)回复于 2005-06-02 09:27:22 得分 0
我觉得这个错误提示很是奇怪。
Exception in thread "main" java.lang.NoClassDefFoundError: BadWindowListener
(wrong name: ccc/BadWindowListener)
真搞不懂。我的classpath中有D:\MyJava\
在D:\Myjava\ccc\BadWindowListener.java也存在。为何提示找不到呢?
java.lang.NoClassDefFoundError
不知道解释器长了什么毛~~~Top
10 楼FBug(花知)回复于 2005-06-02 14:06:47 得分 0
帮我顶上去啊..兄弟们...谁帮我up up啊 .up的人分也会不少啊。Top
11 楼hellwindy(夜神·月)回复于 2005-06-02 14:44:15 得分 39
经过测试顶楼代码可以运行,如加package的话则应在D:\MyJava\>javac ccc/BadWindowListener.javaTop
12 楼FBug(花知)回复于 2005-06-02 16:56:43 得分 0
to:hellwindy(夜神·月)
非常感谢你的解答(刚才我已经不能在发了)
这代码在我公司的机器上是能执行的。
我是D:\MyJava\ccc\>javac BadWindowListener.java
这和D:\MyJava\>javac ccc/BadWindowListener.java有区别吗?我还不知道。等我晚上回去试试。
呵呵。
Top
13 楼FBug(花知)回复于 2005-06-02 18:01:26 得分 0
to:hellwindy(夜神·月)
D:\MyJava\ccc\>javac BadWindowListener.java 和
D:\MyJava\>javac ccc/BadWindowListener.java 是没有区别的;
呵呵。是错在执行它的时候;
操作方法为:
D:\MyJava\>java ccc.BadWindowListener
这时就能运行了。
我变成了: D:\MyJava\ccc\>java BadWindowListener
================================================================
不过我还是搞不懂。为什么要加package。。。。不加就是不行。
感觉就是要先从包里出来,再指定文件在包里面
出来又进去就好了。不是老位置吗?还真TMD有毛.Top
14 楼smltiger(罗小虎)回复于 2005-06-02 19:23:33 得分 1
操,一群菜鸟啊。。。
QQ:28286880Top
15 楼apollo333()回复于 2005-06-02 22:56:17 得分 40
因为你的classpath是这样的
set classpath=%classpath%;.;D:\MyJava
所以当你java XXX的时候,java这个命令是去找classpath里的可能的class文件。也就是找MyJava文件夹里的XXX.class文件。
如果你的XXX文件是在一个package里,
比如说
package ccc;
public class XXX{}
这样的话,
你就要 java ccc.XXX 这样。这个ccc也必须在你的MyJava文件夹里,才能找到。
如果你不想在你的XXX程序里加上package ccc;这样的东西,你就要再添加你的classpath为
set classpath=%classpath%;.;D:\MyJava;D:\MyJava\ccc;
这样也可以。
用package是一个好习惯,因为你不可以把所有的java文件都放到D:\MyJava里,这样会很混乱。
理想的是
A.java 在D:\MyJava\a里。
B.java 在D:\MyJava\b里。
等等。
运行的时候就是java a.A
和java b.B等等。
但是在javac的时候,也就是编译的时候,一定要到XXX.java的当前目录下编译,不管它在不在package里。
等编写的文件多的时候,就可以用IDE,象ECLIPSE了。
Top
16 楼FBug(花知)回复于 2005-06-03 08:55:53 得分 0
谢谢 apollo333() ;
jie~~~~Top




