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.classFinalProject.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的主要内容,如果未能解决你的问题,请参考以下文章

嵌入在 HTML 中的 Java Applet 导致 InvocationTargetException

在java中将图像嵌入到HTML中?

在JSp页面文件中嵌入java语言要素的几种方式

通过 URL 数据嵌入 Java 小程序

jsp中嵌入的java代码执行对html的影响方式

Atitit.嵌入式web 服务器 java android最佳实践