簡體   English   中英

可運行的JAR文件不會

[英]Runnable JAR file won't

我用Java創建了這個紙牌游戲。 它的作用是使一張卡面朝上,另外四張面朝下。 您下注1到100個硬幣,並嘗試從正面朝下的紙牌中選擇更高的紙牌。 如果您選擇更高的卡,您的賭注將加倍,並且您可以選擇在下一輪中加倍或全無。

該程序在一個包中使用3個.java文件:

  • HigherNumber:主類,包含大部分代碼。
  • Deck:包含代表一副紙牌的類的定義。
  • 卡:包含代表單個卡的類的定義。

因此,該程序自然使用大量圖片來表示卡片。 在我最初的實現中,我只是向ImageIcon傳遞了一個字符串,以表示卡的位置。 就像,對於一張面朝下的卡片的圖標,

faceDown = new ImageIcon("multimedia/redBack.gif");

當我這樣做時,該程序在Eclipse中運行時運行完美。 因此,我使用Eclipse導出到可運行的JAR文件。 然后,該JAR文件運行沒有問題,除非我將JAR文件移動到其他地方,所有圖像均未顯示。

因此,我研究並找到了使用URL來解決此問題的方法。 我對該程序進行了重新設計以使用URL,所以現在有了這樣的內容:

//Set URL for default faceDown icon.
faceDownURL = this.getClass().getResource(pictureRoot +"redBack.gif");
//Set location for default back face of cards.
faceDown = new ImageIcon(faceDownURL);

現在它可以在Eclipse中正常運行,但是我無法使導出的可運行JAR正常工作。 從Windows運行時,它只是閃爍而沒有執行任何操作。 當我通過命令行運行時,得到以下信息:

C:\Documents and Settings\mstabosz>java -jar C:\Temp\HigherNumber.jar
Exception in thread "main" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(Unknown Source)
        at higherNumber.Card.setImage(Card.java:150)
        at higherNumber.Card.<init>(Card.java:36)
        at higherNumber.Deck.<init>(Deck.java:22)
        at higherNumber.HigherNumber.<init>(HigherNumber.java:16)
        at higherNumber.HigherNumber.main(HigherNumber.java:857)

嘗試遵循此代碼,問題的根源似乎在第150行的Card類中。在第150行,該類在setImage()函數中,該函數正在構建名為iconName的字符串以用於設置每張卡創建時的圖像。 然后,它將ImageIcon返回給Card類的構造函數。

//Set up the icon for the card.
this.cardIcon = setImage();

第150行是return語句。 以下是創建ImageIcon中使用的URL cardIconURL的語句。

//Create a URL based on the constructed string.
URL cardIconURL = this.getClass().getResource(iconName);

return new ImageIcon(cardIconURL);

我只是不明白這里出了什么問題。 當我使用字符串而不是URL時,該程序作為可運行的JAR正常運行。 在Eclipse中運行時,效果很好。 它現在不能用作可運行的JAR。

我確實閱讀了一些清單,但我很難理解。 我確實讓Eclipse為該程序生成了清單:

Manifest-Version: 1.0
Main-Class: higherNumber.HigherNumber

我想念什么?

我用類似的東西:

URL myurl = this.getClass().getResource("file.png");
myIconImage = Toolkit.getDefaultToolkit().getImage(myurl);

你在做:

return new ImageIcon(cardIconURL);

也許嘗試我的第二行。 我也將圖像存儲在罐子中。

好的,看起來好像是通過將包含圖片的“多媒體”文件夾拖放到Eclipse的“更高編號”包中,將圖像文件保存在可運行的JAR中。 我仍然得到NullPointerException。

暫無
暫無

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

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