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

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

我试图从它的单输出.jar文件运行applet,但是当我这样做时,它在Firefox的屏幕底部显示“applet loaded”,并且java控制台中没有任何内容,但是没有显示在小程序的窗口。 我之前在Firefox中遇到过不同的错误,包括“appletNotLoaded:ClassDefNotFoundError”等错误以及安全错误,但我的java控制台中从未有任何输出。 这是applet的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); } } 

applet作为一个独立的(非嵌入在html中)运行得很好,但我需要嵌入它。 “Vizster”对象是JFrame的扩展,所以我想我应该能够创建它的一个实例并将其添加到applet中。 可能比这复杂得多吗?

不幸的是,我对java和applet很新。 我看过很多关于源代码树结构的论坛post都是个问题,所以:

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

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

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

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

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

对于巨大的post和令人难以置信的模糊问题,我很抱歉,我正在与一个团队合作,在这个团队中,没有人知道关于applets或Java的任何事情(我知道我们真正的辉煌)。 任何forms的帮助或一般性建议都会有所帮助。

谢谢!

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

  

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

另请参阅JNLP,因为它允许您将代码部署为applet或应用程序,还提供用于打印和本地文件访问的API 。 function不适用于简单的applet。