首页 新闻 会员 周边 捐助

linux 下浏览器不能正确执行applet,试了很多方法还是不行?

0
悬赏园豆:20 [已关闭问题] 关闭于 2013-05-14 21:12

各位前辈:

系统是ubuntu 12.04,jdk-1.7.0_21。

Applet的功能是执行本地的一个hello程序,获取hello程序的输出字符串,然后将字符串用g.drawString()画到窗口上。

在eclipse里可以正常运行,将AppletHello.class嵌到html后,用appletviewer也可以运行.html文件。但是用浏览器打开.html文件,applet会运行,但是不能在窗口打印出"hello"字符串——就是

Runtime.getRuntime().exec(command);   

这句话的输出结果。

 

将AppletHello.class打包签名,修改java.policy,这些方法都试了。都没效果。

代码:

AppletHello.java程序

 1 import java.applet.Applet;
 2 import java.awt.Graphics;
 3 import java.io.*;
 4 
 5 public class AppletHello extends Applet {
 6     private static final long serialVersionUID = 1L;
 7     String cmd;
 8     String key;
 9 
10     public void init() {
11         System.out.println("init");
12         cmd = "sudo ./hello";
13         key = null;
14     }
15 
16     public void start() {
17         System.out.println("start");
18         execCommand(cmd);
19     }
20 
21     public void stop() {
22         System.out.println("stop");
23     }
24 
25     public void destroy() {
26         System.out.println("destroy");
27     }
28 
29     public int execCommand(String command) {
30         int execRes = -1; 
31         try {
32             Process p = null;
33             InputStream is = null;
34             InputStreamReader isr = null;
35             BufferedReader br = null;
36 
37             p = Runtime.getRuntime().exec(command);            
38             is = p.getInputStream();
39             isr = new InputStreamReader(is);
40             br = new BufferedReader(isr);
41             String str = null;
42             if ((str = br.readLine()) != null) {
43                 key = str;
44                 System.out.println(str);
45                 System.out.flush();
46             }
47 
48             try {
49                 int intWaitFor = p.waitFor();
50                 System.out.println("intWaitFor:" + intWaitFor);
51             } catch (InterruptedException e) {
52                 System.out.println("Error waitfor.\n");
53                 e.printStackTrace();
54             }
55 
56             int exitVal = p.exitValue();
57             execRes = exitVal;    // when execRes == 0, success; execRes == 1, fail
58             System.out.println("exitVal:" + exitVal);
59             is.close();
60             isr.close();
61             br.close();
62 
63             // p.destroy();
64 
65         } catch (IOException e) {
66             System.out.println("Error exec.\n");
67         }
68 
69         return execRes;
70     }
71 
72     @Override
73     public void paint(Graphics g) {
74         g.drawString("key:" + key, 25, 25);
75     }
76 }
duanguyuan的主页 duanguyuan | 初学一级 | 园豆:136
提问于:2013-05-13 19:29
< >
分享
所有回答(1)
0

解决了,把hello程序放到主文件夹下。

duanguyuan | 园豆:136 (初学一级) | 2013-05-14 21:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册