Java 小程序适用于 appletviewer、Safari 和 Firefox,但不适用于 Chrome

标签 java google-chrome applet appletviewer

操作系统:Mac OS X 10.7.3 Chrome:19.0.1051.0 金丝雀 Java:Java SE 6 的 32 位和 64 位版本

目录结构:

  • page.html
  • 测试.jar
    • 元信息文件
      • MANIFEST.MF
      • SELF-SIG.SF
      • 自签名.DSA
    • com
      • 蒂伊洛
        • 测试
          • 测试$1.class
          • 测试类

页面.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>

测试.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
    }
}

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

编辑 该代码似乎在最新稳定版本的 Chrome 中运行良好,因此这可能只是 Canary 版本中的一个错误。

编辑2

只有在本地运行 html(和 jar)时,chrome 才会出现问题。

最佳答案

关于Java 小程序适用于 appletviewer、Safari 和 Firefox,但不适用于 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9444982/

相关文章:

java - 无法通过 SSL 连接访问 Nexus GUI

java - java中如何禁用JxDatePicker的editField

Python Selenium chrome - 如何禁用用户输入

Java小程序仅返回127.0.0.1

java - 按降序对数组进行排序并显示每次迭代的输出

java - 如何检查加盐和哈希密码的匹配

google-chrome - 如何捕获VisibleTab并将其保存到服务器端的png文件?

html - Multicol 元素在 Chrome 和 Firefox 之间的行为不同

java - 使用 Javascript 函数调用签名的小程序 : Initialization Error on IcedTea plugin

java - Java Applet 中的 Apache FOP - 未找到数据的 ImagePreloader