当前位置: 首页 > 面试题库 >

如何打包具有多个.jar库的applet?

鲍理
2023-03-14
问题内容

我正在从一个大型的现有项目(Vizster)创建一个Java applet。我在Mac OS X上将NetBeans 6.7.1与JDK 1.5一起使用。

我正在尝试从单个输出.jar文件运行该applet,但是当我这样做时,它在Firefox屏幕底部显示“ applet
loading”,并且Java控制台中没有任何内容,但是小程序的窗口。在此之前,我在Firefox中遇到了其他错误,包括诸如“
appletNotLoaded:ClassDefNotFoundError”之类的错误以及安全性错误,但是我的Java控制台中从来没有任何输出。这是该applet的html文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <applet codebase ="." code="zuve.ZuveApplet.class"
            archive="ZuveApplet.jar"
            height="1000" width="1000"/>
  </body>
</html>

我的主要方法位于zuve.ZuveApplet.class,“
ZuveApplet.jar”是输出jar文件的名称。这是ZuveApplet.java,它是主要的方法类:

package zuve;

import vizster.Vizster;
import vizster.VizsterLib;
import java.applet.Applet;

 public class ZuveApplet extends Applet {
     public static final String DEFAULT_START_UID = "186297";

     @Override
     public void init() {
        new Vizster();
     }

    public static void main(String[] argv) {
        VizsterLib.setLookAndFeel();
        //String startUID = argv.length > 0 ? argv[0] : DEFAULT_START_UID;
        String startUID = DEFAULT_START_UID;
        String file = argv.length > 0 ? argv[0] : null;
        new Vizster(startUID, file);
    }
 }

小程序作为独立程序运行良好(未嵌入html),但我需要将其嵌入。“
Vizster”对象是JFrame的扩展,因此我认为我应该能够创建它的一个实例并将其添加到applet中。可能会比这复杂得多吗?

不幸的是,我是Java和Applet的新手。我已经看到很多关于源树结构成为问题的论坛帖子,因此:

1)我使用多个软件包是否有问题?它们都在我项目的src目录中。

2)我的java主目录中需要放置什么吗?我知道很多人都有类路径问题,但是我使用的是现代IDE,我认为这一切对我来说都很重要。

3)将我的项目导入NetBeans Java Web Application项目时,我应该将小程序作为.jar添加到项目中,还是应该添加整个项目?

4)最初,当我创建此applet时,我只有几个源文件和一堆.jar库作为依赖项,但是当我检查输出.jar时,所看到的只是编译后的源文件。没有从库中找到文件的痕迹。这是应该的吗?我注意到,如果我将输出.jar从其包含文件夹中移出,它将无法再独立运行。我以为.jars应该是自包含的,这不是真的吗?关于制作
可执行 jar,我应该知道什么?

5)在旁注中,HTML的applet标签中表示的applet的大小是否必须与applet本身的大小完全匹配?

对庞大的帖子以及令人难以置信的模糊问题深感抱歉,我正在与一个团队合作,在这个团队中没人对applet或Java有任何了解(我知道我们真的很聪明)。任何形式的帮助或一般建议都会真正有帮助。

谢谢!


问题答案:

您可以在archive属性中指定多个jar:

<applet codebase ="." code="zuve.ZuveApplet.class"
        archive="ZuveApplet.jar,thing.jar,anotherThing.jar"
        height="1000" width="1000"/>

JFrame是顶级容器,因此您将无法将其添加到小程序中。您可以让applet创建对象的实例,然后让其打开自己的窗口。一种更灵活的方法是将您的对象重构为JPanel。作为JPanel,可以将其添加到JApplet,或者如果您还希望支持将其作为应用程序运行,则可以添加到JFrame。

还请看一下JNLP,它使您可以将代码部署为applet或应用程序,还提供用于打印和本地文件访问的API。简单小程序无法使用该功能。



 类似资料:
  • 我看到过许多开发人员发布的问题(Android Studio将2.AAR合并为一个或其他),但我还没有看到一个明确的答复,使我能够创建一个包含一个或多个AAR或jar的AAR(我可以使用jar,因为我不需要共享任何资源;只需要共享类)。以下是我的图书馆项目的应用程序分级: 我读过关于传递依赖的文章,但我找不到一个可以帮助解决我的情况的示例实现。

  • 问题内容: 如何使用Maven打包一个可执行jar包? 问题答案: 然后用 编译目标应该在Assembly:single:single之前添加,否则不包括你自己项目中的代码。 在评论中查看更多详细信息。 通常,此目标与自动执行的构建阶段相关。这样可以确保在执行mvn install或执行部署/发布时构建JAR 。

  • 我有一个带有多个模块的gradle(Android)库,有些模块依赖于其他模块(与这里的答案非常相似)https://stackoverflow.com/a/41761846/906362) 这对开发很有用,因为我可以对任何模块进行更改,并看到它们反映在其他模块上。但是要将构建发布到,我需要依赖项作为它们的在线版本。比如: 因此,当它被添加到项目中时,它正确地引用了在上找到的版本,而不是在使用时添

  • 这是我第一次尝试将更复杂的对象存储到数据库中。我需要一些关于数据库设计的帮助。 要存储并从数据库中重新生成的recipe对象 最复杂的部分是对象。每个食谱可以有不同数量的步骤和不同的配料分配给每一个步骤。 我做了另一个设计,其中与以及与相结合。我认为第一种布局更容易查询,因为我只需查看就可以通过进行搜索,但我不确定。有什么想法吗?

  • 任何帮助都是很好的。我在stackoverflow上看到了maven-plugin的配方,但这些配方不适用于Spring-boot。

  • 问题内容: 我有一个旧的J2EE应用程序(J2EE 1.3),该应用程序打包到EAR中,并且在EAR中有WAR和EJB JAR。现在,其中一个EJB JAR需要引用一些第三方库JAR,那么打包那些JAR的最佳位置是什么?如何打包? 问题答案: 它们放在耳朵文件的根目录中,或者您可以创建一个 lib 目录来存储它们。任何需要引用它们的项目(EJB或WAR)都必须将它们包括在清单文件的 Class-P