【问题标题】:Java Applet - multiple .class filesJava Applet - 多个 .class 文件
【发布时间】:2012-01-30 22:09:51
【问题描述】:


我在使用 java 小程序时遇到了一些烦人的问题。

基本上我制作了运行良好的 java 小程序。完成后,我想将它嵌入到 html 文件中,这就是我的问题开始的地方。

当我编译小程序时,我看到除了我的基本 .class 文件之外还有 7 个 .class 文件(Game$1.class、Game$2.class、Game$3.class、...、Game$7.class、Game.class)

我试图忽略其余的 .class 文件并将 Game.class 嵌入到 html 中,但它没有用。当我尝试运行小程序时,它只显示空白的 html 页面。

我用简单的“Hello world”小程序尝试了相同的 html 代码,它工作了,所以我认为 html 文件是正确的

我的 html 文件与整个 java 包一样位于 bin 文件夹中。

谁能帮我解决这个问题?

【问题讨论】:

    标签: java html applet embed


    【解决方案1】:

    嗯,你给的类名似乎你的类中有一些内部类。能否贴出 Game.java 的代码以便更好地理解。

    【讨论】:

    • 您可以从这里获取 .java 文件 alas.matf.bg.ac.rs/~mi09052/Game.java 。基本上我的问题是当我有匿名内部类时如何将小程序嵌入到 html 文件中.所有 .class 文件都在同一个文件夹中,并且在 html 文件的代码属性中我只声明 Game.class 并且它不起作用。有什么想法吗?
    【解决方案2】:

    那些是你的匿名内部类的编译形式。您不能将它们排除在捆绑包之外,没有它们您的小程序将无法运行。

    【讨论】:

    • 其实我并没有把它们排除在外。所有类(匿名内部类和“普通”类)从一开始就在同一个文件夹中。
    【解决方案3】:

    您的问题仅仅是在您的<applet> 标记中,您直接指定了.class 文件的URL,而不是使用.jar 文件吗?

    在这种情况下,也许您应该阅读 Java 教程中的 Lesson: Packaging Programs in JAR Files

    【讨论】:

    • 我也尝试过使用 .jar 文件。我将它与我的 html 文件和 java 包文件夹放在同一个文件夹中,但它不起作用。
    • @B.P.:您的.jar 文件包含所有 .class 文件?在正确的文件夹结构中?您的 HTML 引用了指向 .jar 文件的 URL,而不是指向任何特定 .class 文件的 URL?如果是这样,您能否详细说明“它不起作用”的意思?
    【解决方案4】:

    正如其他人所提到的,额外的类是由于代码中的匿名内部类。它们必须在应用程序的运行时类路径上。使其正常运行。

    有多种方法可以解决此问题。这里有 2 个:

    1. 将所有匿名内部类放在与主小程序类相同的bin 位置。
    2. 将所有类放到一个Jar文件中,将Jar文件放在bin目录下,在小程序的archive属性中注明。

    顺便说一句:为什么这是一个小程序?浏览器包装器给小程序带来了什么(除了挑战)?如果“没有”,最好使用Java Web Start 启动小程序。

    【讨论】:

    • 实际上匿名内部类从一开始就与game.class文件在同一个文件夹中。路径是这样的: .../bin/pack/ 在 pack 文件夹中,我将所有类放在一起。所以当我在代码属性中声明 game.class 时它不起作用。我还尝试了使用归档属性中的 jar 文件的解决方案,但它也不起作用。我刚刚在代码属性旁边添加了archive =“game.jar”,它不起作用。还有其他想法吗?
    • “还有其他想法吗?” 1) 回答我提出的问题。 2) 使用Appleteer 加载小程序 HTML 并复制/粘贴它报告的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多