【问题标题】:Java Applet Will Not Load on WebpageJava Applet 不会在网页上加载
【发布时间】:2012-07-02 17:55:08
【问题描述】:

我有一个可以在文件夹中找到最近创建的文件的 Java 应用程序。我的最终目标是将该应用程序放在网页上,这样当用户打开网页时,该页面将导致文件夹中的最新文件打开。我从 oracle 阅读了一些关于创建简单小程序的教程,但我遇到的所有内容都涉及制作我的页面不需要的 GUI。

目前,当我在 Firefox 中打开 html 页面时,它会加载除小程序之外的所有 html。它没有给出错误消息,它只是不做任何事情。我认为这是因为它没有将我的 java 应用程序识别为小程序,所以我认为我可能需要做更多工作才能将我的代码转换为小程序。我在我的 java 类名中添加了“扩展 Applet”,并考虑添加一个 init 方法,但这似乎更适合那些想要 GUI 的人。

下面是 java 应用程序,以防万一。就 HTML 而言,我将小程序嵌入为 applet code="FirstApplet" width='300' height='300' (带有正确的开始和结束标签),它与 java 应用程序位于同一文件夹中。

import java.applet.Applet;
import java.io.File;
import java.io.IOException;

@SuppressWarnings("serial")
public class FirstApplet extends Applet{
    public static File[] getPath(String folderPath){

        File directory = new File(folderPath);
        File[] myarray;
        myarray=directory.listFiles();
        return myarray;
    }
    public static String getMostCurr(File[] fileArray){
        File mostCurrent = null;
        for (int i = 0; i < fileArray.length; i++) {
            if ((mostCurrent==null)||
            (fileArray[i].lastModified()> mostCurrent.lastModified())) 
        {
            mostCurrent = fileArray[i]; 
        }                   }

        //System.out.println(mostCurrent.toString());       
        return mostCurrent.toString();
    }

    public static void main(String[] args) throws IOException{
        //opens file on MACINTOSH
        Runtime.getRuntime().exec(new String[]{"/usr/bin/open", 
                getMostCurr(getPath("/Users/guest/Desktop/lectures/testFileReader"))});
    }
}   

编辑**:这是请求的 HTML 页面。

<html>
<head>
<title>My First Java Applet </title>
</head>
<body>
Here's my first java applet:  <br> <br>
<applet code ='FirstApplet.class' width='300' height='300'>
</body>
</html>

【问题讨论】:

  • 向我们展示 html。另外,请阅读 AppletViewer 是什么,为什么缓存是个问题,以及如何强制浏览器获取最新版本的小程序。
  • 谢谢,我会调查的。同时,我已将 html 作为编辑发布在最底部。

标签: java html applet load


【解决方案1】:

您的小程序是否仅在本地查看页面时运行 - 即它是 HTML 只是为了方便?

否则,您会遇到高级别的设计问题。当小程序在浏览器中运行时,它是在客户端运行的。因此它将无法列出服务器上的文件。 Applet 沙箱也会阻止您列出客户端文件。您当然不能在小程序中执行Runtime.exec(...)

您需要研究服务器端技术。或者,如果您坚持使用 Applets,您将需要以某种方式获取服务器端的所有文件,查看标头以确定每个资源的创建/上次修改时间,然后选择合适的...

【讨论】:

  • 另外,applet 不会像独立应用程序那样通过执行 main 方法来启动。 @davidVee:阅读什么是小程序,它们是如何工作的,以及它们可以做什么。 Oracle 有一个关于它们的教程。
  • 它是 HTML 只是为了方便。它只会在拥有所有必要文件的经理的计算机上运行。如果某些东西可能更适合我的目的,我肯定会接受替代方法,但有人建议我使用小程序。
【解决方案2】:

HTML 只是为了方便。

开发、调试和部署小程序(甚至在一台 PC 上)并不方便或容易。从我这里拿走吧,我在小程序方面有丰富的经验。

它只会在拥有所有必要文件的经理的计算机上运行。

对于一台机器,我会使用标准应用程序。带有main(),可能从 shell 脚本启动(例如 OS X 的 .sh)。他们不是“单击链接”来浏览自动打开文件的页面,而是“运行(双击?)执行相同操作的脚本”。在 Windows 中,您甚至可能已经直接从 HTML 链接到 .bat 文件,但我怀疑 Apple 会想要打开这个安全漏洞。

还要考虑使用Desktop.open(File)Desktop.edit(File) 而不是Runtime

【讨论】:

  • 谢谢,很遗憾我可能不得不使用 HTML,因为它看起来更方便,尽管您的方式可能更方便。
猜你喜欢
  • 2012-11-15
  • 2010-10-20
  • 2012-03-12
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
相关资源
最近更新 更多