2

我在 Mac OS X 10.5.6 上使用 Java SE 1.6。我的小程序代码如下:

import java.awt.Graphics;
import javax.swing.JApplet;

public class HelloWorld extends JApplet {

    public void paint( Graphics g ) {
            super.paint( g );
            g.drawString( "Hello World!", 25, 25 );
    }

}

我将其编译为.class文件。我的 HTML 文件的代码如下:

<html>

<head>
    <title>Hello World</title>
</head>

<body>
    <applet code="HelloWorld.class" height="300" width="300">
            Your browser is ignoring the applet tag.
    </applet>
</body>

</html>

如果我使用appletviewer运行小程序,它工作正常。但是,如果我在浏览器中打开 HTML 文件,小程序空间会出现一个正方形,但小程序不会加载。(“您的浏览器正在忽略小程序标记。”也没有出现。)浏览器状态栏显示两条消息: Applet HelloWorld 未加载和加载 Java Applet 失败... 我尝试使用 Firefox 3.0.6、Safari 3.2 的小程序.1 和 Opera 9.6.3。他们都不能加载小程序。

如果我尝试在/Developer/Examples/Java/Applets中打开其中一个 Java 演示小程序的 HTML ,它会在所有三个浏览器中正常加载。

在尝试将这个简单的小程序加载到浏览器中时,我在这里缺少什么吗?

4

9 回答 9

2

您没有在小程序标记中指定代码库属性,所以我猜您的类找不到。

尝试启用 java 控制台输出窗口。您可以在扩展选项选项卡(带有树和许多复选框的选项卡)下的“Java 设置”(使用聚光灯)中执行此操作。也许您可以在那里看到更多信息(例如 ClassNotFoundException)。将设置设置为“启用/显示控制台”。然后它应该在您启动小程序时出现。

于 2009-02-06T04:41:42.020 回答
2

不幸的是,Apple 决定只为 OS X 上的 Java 6 发布 64 位 VM。这意味着必须将浏览器链接为 64 位应用程序。现在,他们都没有(据我所知)。因此,“简单”的解决方案是将 Java 5 用于您可以在 Java Preferences 应用程序中配置的小程序。

于 2009-02-06T09:18:47.420 回答
1

Phil,dhiller 关于代码库的评论触发了一些对我有用的东西。如果您将“HelloWorld.class”文件与您的 HTML 文件放在同一个文件夹中,然后将您的 applet 标签设置为: < applet code="HelloWorld.class" codebase="." align="baseline" height="300" width="300" >,然后用您的浏览器打开该 HTML 文件,它应该可以工作。我的做到了。告诉浏览器codebase ="."小程序代码与 HTML 文件位于同一文件夹中。小程序加载失败,因为浏览器显然不知道类代码的位置。

于 2010-05-14T21:53:34.027 回答
0

我不是Web 编程方面的专家,但我认为applet 标签不是标准的。您必须使用带有正确 classid 的对象标记来插入小程序(或几乎任何东西)。

于 2009-02-06T04:29:58.627 回答
0

您没有给小程序一个容器等来显示自己。这是一个示例 HelloWorld 小程序

/*
  File.......: MyHello_JApplet.java
  Description: Basic JApplet example.  (Run by a browser.)
  Programmer.: Michael Thomas
  Date.......: Updated 09/09/01, Orig 09/09/01

*/
import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Container;
import java.awt.Color;

public class MyHello_JApplet extends JApplet {

  public void init() {
    Container objContainer = super.getContentPane();
    objContainer.setBackground( Color.white );
  }
  public void paint(Graphics g) {
    g.drawString("Hello World from JApplet (Swing - JApplet).",10,25);
  }
}
于 2009-02-06T04:55:31.180 回答
0

感谢您的所有回答。他们中的一些人为我指出了正确的方向,以找出问题的根源。

我在 Java 首选项中打开了 Java 控制台。当我再次运行小程序时,我收到以下输出:

Java Plug-in 1.5.0
Using JRE version 1.5.0_16 Java HotSpot(TM) Client VM
MRJ Plugin for Mac OS X v1.0.1
[启动 Java Applet Security @ Fri Feb 06 23:47:20 CST 2009]
java.lang .UnsupportedClassVersionError: 在
java.security.SecureClassLoader.defineClass (SecureClassLoader.java: 124) 在 sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:177) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:316) 在 sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:119)





在 java.lang.ClassLoader.loadClass(ClassLoader.java:251)
在 sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:605)
在 sun.applet.AppletPanel.createApplet (AppletPanel.java:723)
在 sun.plugin。 AppletViewer.createApplet(AppletViewer.java:1864)
在 jep.AppletFramePanel.createApplet(AppletFramePanel.java:189)
在 sun.applet.AppletPanel.runLoader(AppletPanel.java:652) 在 sun.applet.AppletPanel.run(
AppletPanel.java :326)
在 jep.AppletFramePanel.run(AppletFramePanel.java:176)
在 java.lang.Thread.run(Thread.java:613)

我在我的 Mac 上安装了 Java SE 1.6,但我猜它没有安装 1.6 插件。此外,看起来.class文件在创建时会带有版本号。我使用 1.6 版编译了该小程序,但尝试使用 1.5 插件运行它,从而导致UnsupportedClassVersionError。我重新编译了 1.5 版的小程序,并尝试在所有三个浏览器中再次运行它。像魅力一样工作。

有谁知道1.6插件是否正在开发中?

于 2009-02-07T06:46:55.480 回答
0

只是一个注释。这个线程帮助我走上了正轨,所以我只想添加一个有用的注释。2010 年 8 月 9 日。

在 Mac OS X 10.5.8 Leopard 中,使用的 Java 版本由路径 Mac HD/Applications/Utilities/Java Preferences 中的应用程序控制

那可能以前被命名为 Java 设置?用于桌面应用程序的 Java 版本不必与浏览器中使用的版本相同。我在启动 Portecle(从命令行)时遇到问题 - 它报告“.class 文件中的版本号错误”。

截至 2010 年 8 月,Mac OS X 10.5.8 默认 Java 序列为:

  • J2SE 5.0.......32 位
  • J2SE 5.0.......32 位
  • Java SE 6.....64 位
  • J2SE 5.0.......64 位
  • J2SE 1.4.2 ...32 位

显然,我试图加载的 Java 应用程序需要 Java SE 6 64 位,因为将 Java SE 6 拖到该列表的顶部会立即解决问题,之后可以从命令行或双击或启动 Portecle portecle.jar。(万岁)

于 2010-08-09T18:11:55.997 回答
0

不要在 HTML 文件中的类名周围加上引号。每次我引用时,小程序都不适合我。:)

于 2010-11-16T00:06:02.903 回答
0

这是你的答案

<html>
   <applet code="packagename.HelloWorld.class" height="300" width="300">
</html>

用你的包替换包名..

于 2013-05-08T06:48:51.090 回答