Java 嵌入 HTML
Posted
技术标签:
【中文标题】Java 嵌入 HTML【英文标题】:Java Embedding Into HTML 【发布时间】:2012-06-13 10:45:42 【问题描述】:我确信这个问题已经被问过一百万次了,但是无论我进行多少次 Google 搜索,我都无法解决这个问题。我基本上是在尝试将一个包含多个包的项目嵌入网页中。我做了一个测试程序,它只是让一些球在屏幕上弹跳并且能够让它运行。我将主类放在一个包中,将球类放在另一个包中只是为了测试它,它似乎运行良好。但是我在网页中实际需要的程序(只是称为 FinalProject)拒绝这样做。
我能做的最好的事情就是给我一个空白屏幕,没有给出错误,只是白色。如果我尝试单击应该没有任何反应的地方,我想是因为小程序在那里但只是显示为白色,所以我看不到它。我确实使用了applet
标签,据我了解,它现在已被贬值,但我需要将这个项目提交到网页上,这样老师才能看到它。我们已经测试过其他人的项目(使用applet
标签)可以正常工作,所以我现在试图坚持下去,并担心以后让它在每个浏览器上都能正常工作。虽然这很可能是问题所在。也许它可以在他的浏览器上工作,但不是我的。我尝试在 Google Chrome、Mozilla Firefox 和 Internet Explorer 上运行我的程序,但没有成功。
这是 html 代码:
<html>
<head>
</head>
<body>
<applet code = "main.FinalProject.class" width = "700px" height = "500px"></applet>
</body>
</html>
写入的 HTML 文件位于 [Eclipse Workspace]/FinalProject/bin/test.htm
中。 HTML 中引用的 FinalProject.class 文件存在于[Eclipse Workspace]/FinalProject/bin/ main/FinalProject.class
中。 FinalProject.class 文件作为主类,所以我很确定这是我需要运行的。它具有 init()、actionPerformed()、paint() 方法和所有好东西。
目前我正在尝试在我的计算机上离线运行它,所以我认为不应该有任何网络 URL。我使用 Eclipse 编写 Java 代码,不知道这是否有什么不同。不幸的是,Java 代码相当大,无法在此处重现,如果您认为有什么具体问题,我可以查看并发布该小部分。
我的一些朋友设法让他们的文件正常工作,但是他们说他们必须删除他们所有的 .png 文件(很烦人,但对我的项目来说是可行的)。他们还说必须删除所有鼠标移动代码。我的程序有点依赖于此,我需要它才能正常工作。我知道必须有一种方法可以在线使用所有 MouseListener 和 MouseMoveListener 代码,但也许有点不同。我不知道这是否与此有关,但我想我会指出它只是为了安全。
我们将不胜感激。
【问题讨论】:
我假设您将类 FinalProject 声明为在 java 代码中的 main 包中?您可以尝试将其移动到默认包中,以检查路径是否有问题。 哦,哎呀,我说 FinalProject 在主类中。这真的没有意义。我的意思是 FinalProject 是 Main 类,并且也在 main 包中。那是两句话,不知怎的,我把它们组合起来了。 我建议使用 javascript 而不是 Java。这会更容易,也更快。 @Vulcan - 我不知道我得到了什么错误,因为我只是得到一个空白屏幕我无法查找 Java 控制台(除非我不知道还有其他方法) . @Doug 您可以将控制台记录到服务器上的某些内容,例如数据库或文件,但这可能比必要的工作量更大。您是否尝试指定小程序标签的存档属性? 【参考方案1】:基本上你问的是:How to deploy a java applet for today's browsers (applet, embed, object)?
基于此,我认为您想要的是:
<object
classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA"
style="height: 500px; width: 700px;">
<param name="code" value="FinalProject.class">
<comment>
<embed code="FinalProject.class"
type="application/x-java-applet"
>
<noembed>
This browser appears to lack support for Java Applets.
</noembed>
</embed>
</comment>
</object>
现在,您的代码中有一个文件名main.FinalProject.class
。似乎FinalProject.class
更有可能。但你的可能是对的。在任何情况下,此 html 文件都需要与 main.FinalProject.class
或 FinalProject.class
位于同一文件夹中,并且可能还需要任何类。
现在,您可能还需要确保您的浏览器实际上可以运行小程序。请参阅:How do I enable Java in my web browser?
更新
根据 Andrew Thompson 的反馈,首选的解决方案是使用 Oracle 的 JavaScript,如下所示:
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes =
code:'FinalProject.class',
width:700, height:500 ;
var parameters = ; // does the Applet take parameters?
var version = '1.6' ; // does the Applet require a minimum version of Java
deployJava.runApplet(attributes, parameters, version);
</script>
这需要能够加载任意 JavaScript,但您也可以捕获该 deployJava.js 并将其设置为本地。可能值得一看。
【讨论】:
感谢您的快速回复。然而 Chrome 和 IE 没有变化,它仍然只是一个空白屏幕。 Firefox 有点奇怪,它说我需要一个不同的插件(尽管其他测试的项目确实并且仍然可以正常工作),当我告诉它检查时它找不到任何东西。我用谷歌搜索了最新版本的 Firefox,下载并安装了它,但它仍然说我需要另一个插件。不知道从那里做什么。注意:没有一个浏览器显示“此浏览器似乎缺乏对 Java 小程序的支持”。消息。 我的 Chrome 和 Safari 中的代码在这个答案中可以在 MacOSX 上运行。 Firefox 最初失败了,但我更新了嵌入标签中的类型,现在它可以工作了。你也可以看看:java.com/en/download/help/enable_browser.xml 它说它已启用,而且我在使用任何其他在线 Java 小程序时从未遇到任何问题。诚然,我很少使用它,但它仍然可以正常工作。所有的浏览器都不断弹出“你真的确定要运行这个吗?它可能会炸毁你的电脑!”每当我尝试加载它时,我就知道它没有被禁用。 我想你想确保你的类被命名为FinalProject.class
——所以在你的代码中你应该有:public class FinalProject extends Applet
我相信。你确定你的小程序真的会运行吗?
程序在Eclipse中运行良好,文件名为FinalProject.class
。整个声明行是public class FinalProject extends JApplet implements ActionListener, KeyListener, MouseListener, MouseMotionListener
。我不知道 JApplet 是否与它有关。以上是关于Java 嵌入 HTML的主要内容,如果未能解决你的问题,请参考以下文章