简体   繁体   English

Java applet可在appletviewer,Safari和Firefox中使用,但不能在Chrome中使用

[英]Java applet works in appletviewer, Safari and Firefox, but not Chrome

OS: Mac OS X 10.7.3 Chrome: 19.0.1051.0 canary Java: 32-bit and 64-bit version of Java SE 6 操作系统:Mac OS X 10.7.3 Chrome:19.0.1051.0 canary Java:Java SE 6的32位和64位版本

Directory structure: 目录结构:

  • page.html page.html
  • Test.jar Test.jar
    • META-INF META-INF
      • MANIFEST.MF 清单文件
      • SELF-SIG.SF 自体SIG
      • SELF-SIG.DSA 自我SIG
    • com COM
      • tyilo 泰洛
        • Test 测试
          • Test$1.class 测试$ 1.class
          • Test.class 测试类

page.html: page.html中:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Testing applet</title>
        <style type="text/css">

        </style>
        <script type="application/javascript">

        </script>
    </head>
    <body>
        <object type="application/x-java-applet" height="300" width="550">
            <param name="code" value="com.tyilo.Test.Test">
            <param name="archive" value="Test.jar">
            Applet failed to run.  No Java plug-in was found.
        </object>
    </body>
</html>

Test.java: Test.java:

package com.tyilo.Test;

import java.awt.Graphics;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.security.AccessControlException;
import javax.swing.JApplet;

public class Test extends JApplet
{

    private static final long serialVersionUID = 1L;

    public String text;

    @Override
    public void init()
    {   
        text = "~/test.txt created successfully!";
        try
        {
            FileWriter fstream = new FileWriter(System.getProperty("user.home") + "/test.txt");
            BufferedWriter out = new BufferedWriter(fstream);
            out.write("Testing123");
            out.close();
        }
        catch(AccessControlException e)
        {
            text = "File permission error.";
        }
        catch(Exception e)
        {
            text = "Unknown error: " + e.getMessage();
        }
    }

    @Override
    public void paint(Graphics g)
    {
        g.drawString(text, 50, 30);
    }

    @Override
    public void start()
    {
        //TODO
    }

    @Override
    public void stop()
    {
        //TODO
    }

    @Override
    public void destroy()
    {
        //TODO
    }
}

Java console error in chrome: Chrome中的Java控制台错误:

load: class com.tyilo.Test.Test not found.
java.lang.ClassNotFoundException: com.tyilo.Test.Test
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:252)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:249)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:179)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:690)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3045)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497)
    at java.lang.Thread.run(Thread.java:680)
Exception: java.lang.ClassNotFoundException: com.tyilo.Test.Test

Edit The code seems to run fine in the latest stable version of chrome, so this might just be a bug in the canary version. 编辑该代码在chrome的最新稳定版本中似乎可以正常运行,因此这可能只是canary版本中的错误。

Edit 2 编辑2

There is only a problem with chrome when running the html (and jar) locally. 在本地运行html(和jar)时,chrome仅存在问题。

Enable java in chrome, to do this, type javascript:if(browser.value.getIndex("chrome"){chrome.browser.enableFeature(JApplet)}); 在chrome中启用Java,为此,请键入javascript:if(browser.value.getIndex(“ chrome”){chrome.browser.enableFeature(JApplet)}); in to chrome 镀铬

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM