代码:
public class WebApplet extends JApplet{
private static final long serialVersionUID = 3256444702936019250L;
    private static final Dimension DEFAULT_SIZE = new Dimension(530, 320);
    private JScrollPane jpane;
    
    
    public void init() {
     try{    
     //获取图形对象
URL url = new URL("http://192.168.1.220/applet/GetData");
URLConnection urlConn = url.openConnection();

urlConn.setDoOutput(true);
urlConn.setDoInput(true);
urlConn.setUseCaches(false); ObjectInputStream inp=new ObjectInputStream(new BufferedInputStream(urlConn.getInputStream()));

if(inp==null){
System.out.println("ObjectInputStream 为空!!!!");  }else{
System.out.println("ObjectInputStream 不为空!!!!");  } Object obj=inp.readObject();
System.out.println("inp.readObject():    "+obj); 
jpane=(JScrollPane)obj; //取出图形内容
System.out.println(jpane);   

    
     //初始化按钮对象
JToolBar toolbar = new JToolBar();
toolbar.setFloatable(false);
JButton save = new JButton("保存");
save.setBounds(20,0,50,25); JButton open = new JButton("打开");
open.setBounds(90,0,50,25);
String file="d://graph/"+new SimpleDateFormat("yyyy-MM-dd").format(new Date());

//将按钮对象放到applet中
JPanel  bjpanel=new JPanel();
bjpanel.setLayout(new FlowLayout(FlowLayout.LEFT));
toolbar.add(save);
toolbar.add(open);
bjpanel.add(toolbar);
add(bjpanel,BorderLayout.NORTH);

JPanel  fjpanel=new JPanel();
fjpanel.add(jpane);
fjpanel.setLayout(new BoxLayout(fjpanel,BoxLayout.Y_AXIS));
        add(fjpanel,BorderLayout.CENTER);


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    }
    
public void start(){


}

public static void main(String arg[]){
WebApplet app=new WebApplet();
app.init();
}}
在Eclipse中运行没问题,但是放到网页上运行就报错了,或者是在命令提示符下运行java WebApplet 命令也报错
异常如下:ObjectInputStream 不为空!!!!
java.lang.NullPointerException
        at java.awt.Container.readObject(Container.java:3507)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946
)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1634)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
        at java.io.ObjectInputStream.access$300(ObjectInputStream.java:185)
        at java.io.ObjectInputStream$GetFieldImpl.readFields(ObjectInputStream.j
ava:2069)
        at java.io.ObjectInputStream.readFields(ObjectInputStream.java:518)
        at java.awt.Container.readObject(Container.java:3492)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946
)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at WebApplet.init(WebApplet.java:45)
        at WebApplet.main(WebApplet.java:94)请大家帮忙看看是怎么回事呀...

解决方案 »

  1.   

    urlConn.setDoOutput(true);
    urlConn.setDoInput(true);
    urlConn.setUseCaches(false); 第一句你是要POST的,但我没看到你POST数据啊?你应该先向OutputStream发送数据才可以!所以,我认为你的inp根本没有读取到任何数据,才引起的异常!
      

  2.   

    urlConn.setDoOutput(true); 
    urlConn.setDoInput(true); 
    urlConn.setUseCaches(false); 
    这3行删除了 
    问题依旧啊
      

  3.   

    如果还不对,那就是内部的问题了
    java.lang.NullPointerException
            at java.awt.Container.readObject(Container.java:3507) 也许你穿过来的readObject并不是对象,或者有错误。 再具体的,我就猜不到了。 SORRY
      

  4.   


    这是servlet的代码:
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { javax.servlet.ServletOutputStream servletoutputstream = response
    .getOutputStream();
    ObjectOutputStream objectoutputstream = new ObjectOutputStream(
    servletoutputstream);

    GraphLayout layout = new GraphLayout();
    JScrollPane jpane=layout.getJpane();  //显示图形面板
    objectoutputstream.writeObject(jpane);
    objectoutputstream.flush();
    objectoutputstream.close();
    }这样得不到数据吗?????
      

  5.   


    可是我在Eclipse中运行的时候是没有问题的呀!!!!
      

  6.   

    Debug一下看看urlConn为null不?
    NullPointer解决方法很简单, 在他提示的错误代码行加一个断点, debug过去看看哪个对象为null就可以了
      

  7.   

    在Eclipse中运行的时候是没有问题的
    在网页上看这个applet的时候就出问题了,也没有办法debug,只能吧可能为空的对象打印出来,
    但是结果是并没有看到为空的对象呀!!!!!
      

  8.   

    java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.1.220:80 connect,resolve)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.<init>(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at coco.org.layout.WebApplet.init(WebApplet.java:38)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    我发现真正的问题好像是这个。
    因为我的applet里面调用了服务器上的一个servlet,出了问题,这个怎么解决呀???