【问题标题】:Embedding Java Applet into .html file将 Java Applet 嵌入到 .html 文件中
【发布时间】:2026-01-14 10:40:01
【问题描述】:

我在将小程序嵌入网页时遇到问题。我不认为我做得对。

* 我的 html 文件与 .class 文件位于同一目录中

我的主要方法在 CardApp 类中

这是我的html代码

<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>TestJCardBet.html</title>
</head>
<body>
<applet codebase="" code="CardApp.class" height="400" width="500"></applet>
</body>
</html>

【问题讨论】:

  • 顺便问一下,在发这样的问题之前请先用谷歌。
  • 我确实使用了谷歌,这就是我想出这段代码的方式。
  • 你说“我的主要方法在 CardApp 类中” 但小程序不需要主要方法(至少不需要public static void main(String s[]))。拥有一个可能更容易将小程序作为一个独立的应用程序进行测试,但浏览器不会调用它。
  • 发布你的小程序源代码。
  • 除了发布源代码(或者更好的是 SSCCE - pscode.org/sscce.html),请确保控制台已打开,并复制/粘贴任何输出(错误和异常)。

标签: java html applet


【解决方案1】:

让小程序在各种浏览器上运行非常困难。这些标签在早期没有得到适当的标准化,因此 Internet Explorer 和 Mozilla 分道扬镳。

Sun 开发了一个通用的 JavaScript 来处理所有特定的浏览器怪癖,因此您不必担心浏览器的兼容性。

将此添加到您的 &lt;head&gt; 部分:

<script src="//www.java.com/js/deployJava.js"></script>

这是&lt;body&gt;部分:

<script>
    var attributes = {codebase: 'http://my.url/my/path/to/codebase',
                      code: 'my.main.Applet.class',
                      archive: 'my-archive.jar',
                      width: '800', 
                      height: '600'};
    var parameters = {java_arguments: '-Xmx256m'}; // customize per your needs
    var version = '1.5'; // JDK version
    deployJava.runApplet(attributes, parameters, version);
</script>

有关脚本和所有可能选项的详细说明,请参阅 Java™ Rich Internet Applications Deployment Advice

【讨论】:

  • 代码库是我的 .class 文件所在的目录吗?我的 .html 文件与 .class 文件位于同一目录中。我应该为代码库添加什么?
  • 归档也是必需的属性吗?我没有罐子。我应该建一个吗?还是没有它也行?
  • 还有,行 var 参数。我就这样离开吗?还是我需要用 java_arguments 代替我的主要论点?实际上我的程序不需要任何参数来运行它。
  • jdk版本,是我电脑上的版本吗?还是我用来构建项目的合规版本?
  • 它不再适用于 Chrome,因为它不再支持 NPAPI 插件。 java.com/it/download/faq/chrome.xml
【解决方案2】:

我同意deployJava.js 是当今的首选方法。

然后遵循几个旧的多浏览器技巧以确保历史完整性。

https://www.ailis.de/~k/archives/63-How-to-use-Java-applets-in-modern-browsers.html:

<object id="testapplet-object" 
        classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
        width="256" height="256"
        codebase="http://java.sun.com/update/1.6.0/jinstall-6u30-windows-i586.cab#Version=1,6,0,0">
  <param name="archive" value="mytest.jar" />
  <param name="code" value="my.package.MyClass" />
  <param name="myParam" value="My Param Value" />
  <embed id="testapplet-embed"
         type="application/x-java-applet;version=1.6"
         width="256" height="256" 
         archive="mytest.jar"
         code="my.package.MyClass" 
         pluginspage="http://java.com/download/"
         myParam="My Param Value" />
  </embed>
</object>

http://joliclic.free.fr/html/object-tag/en/object-java.html(有多种变体):

<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
        width="150" height="80">
  <param name="codebase" value="data" >
  <param name="code" value="JitterText">
  <param name="BGCOLOR" value="000000">
  <param name="TEXTCOLOR" value="FF0000">
  <param name="TEXT" value="OJITesting!">
  <param name="SPEED" value="250">
  <param name="RANDOMCOLOR" value="1">

  <!--[if gte IE 7]> <!-->
  <object classid="java:JitterText.class"
          codebase="data"
          type="application/x-java-applet"
          width="150" height="80">
    <param name="code" value="JitterText">
    <!-- Safari browser needs the following param -->
    <param name="JAVA_CODEBASE" value="data">
    <param name="BGCOLOR" value="000000">
    <param name="TEXTCOLOR" value="FF0000">
    <param name="TEXT" value="OJITesting!">
    <param name="SPEED" value="250">
    <param name="RANDOMCOLOR" value="1">
    alt : <a href="data/JitterText.class">JitterText.class</a>
  </object>
  <!--<![endif]-->
  <!--[if lt IE 7]>
    alt : <a href="data/JitterText.class">JitterText.class</a>
  <![endif]-->

</object>

【讨论】: