[英]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顺序为:
显然,我尝试加载的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.