我正在从一个大规模的现有项目(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很新.我看过很多关于源树结构的论坛帖子都是个问题,所以:
1)我使用多个包是一个问题吗?它们都在我项目的src目录中.
2)我需要放在我的java主目录中吗?我知道很多人都有类路径问题,但我使用的是现代IDE,我认为这样可以解决所有这些问题.
3)将项目导入NetBeans Java Web应用程序项目时,是否应将applet作为.jar添加到项目中,还是应该添加整个项目?
4)最初当我创建这个applet时,我只有几个源文件和一堆.jar库作为依赖项,但是当我检查输出.jar时,我看到的只是编译后的源文件.没有来自库的文件的痕迹.这应该是怎么回事?我注意到,如果我将输出.jar从其包含的文件夹中移出,它就不能再独立运行了.我认为.jars应该是自包含的,这不是真的吗?制作可执行 jar 有什么我应该知道的吗?
5)在旁注中,html中applet标签中表示的applet的大小是否必须与applet本身的大小完全匹配?
对于巨大的帖子和令人难以置信的模糊问题,我很抱歉,我正在与一个团队合作,在这个团队中,没有人知道关于applet或Java的事情(我知道真正的辉煌).任何形式的帮助或一般性建议都会有所帮助.
谢谢!
您可以在归档属性中指定多个jar:
JFrame是顶级容器,因此您无法将其添加到applet中.您可以让applet创建对象的实例,并让它打开自己的窗口.更灵活的方法是将对象重构为JPanel.作为JPanel,如果您还希望支持将其作为应用程序运行,则可以将其添加到JApplet或JFrame.
另请参阅JNLP,因为它允许您将代码部署为applet或应用程序,还提供用于打印和本地文件访问的API.功能不适用于简单的applet.