java – 如何打包一个applet与多个.jar库?

前端之家收集整理的这篇文章主要介绍了java – 如何打包一个applet与多个.jar库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在从一个大型的预先存在的项目(Vizster)创建一个 Java小程序.我在Mac OS X上使用NetBeans 6.7.1和JDK 1.5.

我试图从它的单一输出.jar文件中运行applet,但是当我这样做时,它会在Firefox的屏幕底部显示“applet加载”,并且在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是我的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和applets一般不幸的是.我已经看到很多关于源代码树结构的论坛帖子是一个问题,所以:

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

2)有没有什么我需要放在我的java主目录?我知道很多人都有类路径问题,但是我正在使用一个现代的IDE,我认为这是为我照顾所有这些.

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

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

5)在旁注中,html中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,这样可以将代码部署为小程序或作为应用程序,并提供APIs进行打印和本地文件访问.功能不适用于简单的applet.

猜你在找的Java相关文章