LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 817|回复: 7

为什么这个程序能编译不能运行

[复制链接]
发表于 2003-11-19 16:48:03 | 显示全部楼层 |阅读模式
程序源代码 :
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
                                                                                                                                                               
public class MyFrame extends Frame
{
Button button1;
MyFrame()
{
  super("my window");
  Button button1=new Button("enter");
  add(button1);
}
public static void main(String args[])
{
  MyFrame fr=new MyFrame();
  fr.resize(200,100);
  fr.show();
}
}

现下面是错误信息:
[hello@localhost java]$ javac MyFrame.java
[hello@localhost java]$ java MyFrame
returned
end
Exception in thread "main" java.awt.AWTError: Cannot load AWT toolkit: gnu.java.awt.peer.gtk.GtkToolkit
   at 0x40268e17: java.lang.Throwable.Throwable(java.lang.String) (/usr/lib/./libgcj.so.3)
   at 0x4025bc8e: java.lang.Error.Error(java.lang.String) (/usr/lib/./libgcj.so.3)
   at 0x40329582: java.awt.AWTError.AWTError(java.lang.String) (/usr/lib/./libgcj.so.3)
   at 0x40340c9d: java.awt.Toolkit.getDefaultToolkit() (/usr/lib/./libgcj.so.3)
   at 0x4034146e: java.awt.Window.getToolkit() (/usr/lib/./libgcj.so.3)
   at 0x40332068: java.awt.Container.addImpl(java.awt.Component, java.lang.Object, int) (/usr/lib/./libgcj.so.3)
   at 0x40331e85: java.awt.Container.add(java.awt.Component) (/usr/lib/./libgcj.so.3)
   at 0x403831e7: ffi_call_SYSV (/usr/lib/./libgcj.so.3)
   at 0x403831a7: ffi_raw_call (/usr/lib/./libgcj.so.3)
   at 0x402306e8: _Jv_InterpMethod.continue1(_Jv_InterpMethodInvocation) (/usr/lib/./libgcj.so.3)
   at 0x40230ff4: _Jv_InterpMethod.run(ffi_cif, void, ffi_raw, _Jv_InterpMethodInvocation) (/usr/lib/./libgcj.so.3)
   at 0x4022e504: _Jv_InterpMethod.run_normal(ffi_cif, void, ffi_raw, void) (/usr/lib/./libgcj.so.3)
   at 0x4038305c: ?? (??:0)
   at 0x403831e7: ffi_call_SYSV (/usr/lib/./libgcj.so.3)
   at 0x403831a7: ffi_raw_call (/usr/lib/./libgcj.so.3)
   at 0x402306e8: _Jv_InterpMethod.continue1(_Jv_InterpMethodInvocation) (/usr/lib/./libgcj.so.3)
   at 0x40230ff4: _Jv_InterpMethod.run(ffi_cif, void, ffi_raw, _Jv_InterpMethodInvocation) (/usr/lib/./libgcj.so.3)
   at 0x4022e504: _Jv_InterpMethod.run_normal(ffi_cif, void, ffi_raw, void) (/usr/lib/./libgcj.so.3)
   at 0x4038305c: ?? (??:0)
   at 0x40242dd8: gnu.gcj.runtime.FirstThread.call_main() (/usr/lib/./libgcj.so.3)
   at 0x402ad02d: gnu.gcj.runtime.FirstThread.run() (/usr/lib/./libgcj.so.3)
   at 0x4024fc4c: _Jv_ThreadRun(java.lang.Thread) (/usr/lib/./libgcj.so.3)
   at 0x4021c8ac: _Jv_RunMain(java.lang.Class, byte const, int, byte const, boolean) (/usr/lib/./libgcj.so.3)
   at 0x08048910: ?? (??:0)
   at 0x42015574: __libc_start_main (/lib/tls/libc.so.6)
   at 0x080486c1: ?? (??:0)
[hello@localhost java]$

很苦恼,身边没什么人帮我
所以来找人帮忙

:help
发表于 2003-11-20 10:44:02 | 显示全部楼层
新的jdk1.4已经用JFrame代替了Frame。按照新的jdk1.4要求重写代码试试.
发表于 2003-11-20 14:22:32 | 显示全部楼层
不要用awt组件了,sun不推荐用
 楼主| 发表于 2003-11-24 19:17:00 | 显示全部楼层
那样更不行,我也试过

错误信息:
[hello@localhost java]$ javac Example25_2.java
Example25_2.java:1: Can't find default package `javax.swing'. Check the CLASSPATH environment variable and the access to the archives
Example25_2.java:4: Superclass `JFrame' of class `Mywindow' not found.
  class Mywindow extends JFrame
                         ^
Example25_2.java:6: Type `JButton' not found in declaration of field `button'.
    JButton button;JTextArea text;
    ^
Example25_2.java:6: Type `JTextArea' not found in declaration of field `text'.
    JButton button;JTextArea text;
                   ^
4 errors
[hello@localhost java]$

我的CLASSPATH是这样设置的:
JAVA_HOME=/usr/java/j2sdk1.4.2_02
JRE=/usr/local/jre
CLASSPATH=$JAVA_HOME/libJRE/lib:.
PATH=$PATHJAVA_HOME/binJRE/bin:.

export JAVA_HOME JRE CLASSPATH PATH
发表于 2003-11-25 18:35:58 | 显示全部楼层
Note:  uses or overrides a deprecated API.

不过在我这里可以运行!
发表于 2003-11-25 18:58:50 | 显示全部楼层
import java.awt.*;
import javax.swing.*;
public class MyFrame
{
        JButton button1;
        JFrame frame;
        MyFrame()
        {
                frame = new JFrame("window");
                button1=new JButton("enter");
        }
        void disPlay(){
                frame.getContentPane().add(button1);
                frame.setSize(200,200);
                frame.setVisible(true);
        }
        public static void main(String args[])
        {
                MyFrame fr=new MyFrame();
                fr.display();
        }
}
发表于 2003-11-25 19:21:55 | 显示全部楼层
最初由 xhello 发表

我的CLASSPATH是这样设置的:
JAVA_HOME=/usr/java/j2sdk1.4.2_02
JRE=/usr/local/jre
CLASSPATH=$JAVA_HOME/libJRE/lib:.
PATH=$PATHJAVA_HOME/binJRE/bin:.

export JAVA_HOME JRE CLASSPATH PATH

将JRE=/usr/local/jre改成JRE=$JAVA_HOME/jre试试.
发表于 2003-11-25 20:35:16 | 显示全部楼层
at 0x40268e17: java.lang.Throwable.Throwable(java.lang.String) (/usr/lib/./libgcj.so.3)


是不是装了gcj?用which javac java看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表