簡體   English   中英

如何打包具有多個.jar庫的applet?

[英]How do I package up an applet with multiple .jar libraries?

我正在從一個大規模的現有項目(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文件:

<!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);
    }
 }

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:

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

JFrame是頂級容器,因此您無法將其添加到applet中。 您可以讓applet創建對象的實例,並讓它打開自己的窗口。 更靈活的方法是將對象重構為JPanel。 作為JPanel,如果您還希望支持將其作為應用程序運行,則可以將其添加到JApplet或JFrame。

另請參閱JNLP,因為它允許您將代碼部署為applet或應用程序,還提供用於打印和本地文件訪問的API 功能不適用於簡單的applet。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM