繁体   English   中英

如何在Mac OS X的浏览器中使用简单的Hello World Java小程序?

[英]How do I get a simple, Hello World Java applet to work in a browser in Mac OS X?

我在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运行applet,它可以正常工作。 但是,如果我在浏览器中打开HTML文件,则小程序空间会出现一个正方形,但小程序不会加载。 (“浏览器正在忽略小程序标记。”也不会出现。)浏览器状态栏显示两个消息: 加载 小程序HelloWorld加载Java小程序失败...我在Firefox 3.0.6,Safari 3.2中尝试了小程序.1和Opera 9.6.3。 它们都无法加载小程序。

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

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

您没有在applet标记中指定codebase属性,所以我猜找不到您的类。

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

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

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

这是你的答案

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

用您的软件包替换软件包名称。

请注意。 此主题有助于使我步入正轨,所以我只想添加一个有用的注释。 2010年8月9日。

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

那可能以前被称为Java设置? 用于桌面应用程序的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应用程序需要64位Java SE 6,因为将Java SE 6拖到该列表的顶部即可立即解决此问题,之后可以从命令行或双击或启动Portecle。 portecle.jar。 (万岁)

不要在HTML文件中的类名两边加上引号。 每次我引用报价时,applet都不会对我有用。 :)

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

您没有给apllet提供容器来显示自己。这是HelloWorld applet示例

/*
  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);
  }
}

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

我在Java偏好设置中打开了Java控制台。 当我再次运行该applet时,收到的输出如下:

Java插件1.5.0
使用JRE版本1.5.0_16 Java HotSpot(TM)客户端VM
适用于Mac OS X v1.0.1的MRJ插件
[在2009年2月6日星期五23:47:20 CST启动Java Applet安全性]
java.lang.UnsupportedClassVersionError:.class文件中的版本号错误
在java.lang.ClassLoader.defineClass1(本机方法)
在java.lang.ClassLoader.defineClass(ClassLoader.java:675)
在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版编译了该applet,但尝试使用1.5插件运行它,从而导致UnsupportedClassVersionError 我用1.5版重新编译了applet,并尝试再次在所有三个浏览器中运行它。 像魅力一样工作。

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

暂无
暂无

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

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