gpt4 book ai didi

java - 如何将包含多个 .jar 库的小程序打包?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:53:14 25 4
gpt4 key购买 nike

我正在从一个大型的预先存在的项目 (Vizster) 中创建一个 Java applet。我在 Mac OS X 上使用 NetBeans 6.7.1 和 JDK 1.5。

我试图从它的单一输出 .jar 文件运行小程序,但是当我这样做时,它在 Firefox 的屏幕底部显示“小程序已加载”,并且 java 控制台中没有任何内容,但没有任何显示在小程序的窗口中。在此之前,我在 Firefox 中遇到过不同的错误,包括诸如“appletNotLoaded:ClassDefNotFoundError”之类的错误以及安全错误,但我的 java 控制台中从来没有任何输出。这是小程序的 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是我的main方法所在的地方,“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 的扩展,所以我认为我应该能够创建它的实例并将其添加到小程序中。可能比这复杂得多?

不幸的是,我对 java 和 applet 不熟悉。我看到很多关于源代码树结构问题的论坛帖子,所以:

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

2) 我需要在我的 java 主目录中放置什么吗?我知道很多人都有类路径问题,但我使用的是现代 IDE,我认为它为我解决了所有这些问题。

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

4) 最初,当我创建这个小程序时,我只有几个源文件和一堆 .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 是顶级容器,因此您无法将它添加到您的小程序中。您可以让您的小程序创建您的对象的一个​​实例,并让它打开自己的窗口。一种更灵活的方法是将您的对象重构为 JPanel。作为 JPanel,它可以添加到 JApplet,如果您还想支持将其作为应用程序运行,则可以添加到 JFrame。

另请查看 JNLP因为它允许您将代码部署为小程序或应用程序,并且还提供了 APIs用于打印和本地文件访问。简单小程序无法使用的功能。

关于java - 如何将包含多个 .jar 库的小程序打包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2829388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com