[英]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.