Avatar billede fuddi12 Nybegynder
09. juli 2003 - 14:02 Der er 13 kommentarer og
1 løsning

java.lang.NoClassDefFoundError: PokerApplet$1

Jeg har lavet et lille poker spil med Oracle9i JDeveloper, som jeg ville have ind på min hjemmeside. Men når jeg prøver at køre det på hjemmeside for jeg en java.lang.NoClassDefFoundError: PokerApplet$1 fejl.
Denne klasse "PokerApplet$1" er ikke ind jeg har lavet, men en JDeveloper selv har lavet, og den klasse kan jeg ikke flytte hen på min egen hjemmeside :( så mit spil kan ikke køre på nettet uden den og det forstår jeg ikke rigtig. Håber der er en der kan!
Hjemmeside: http://home19.inet.tele.dk/fuddi/applet/Poker/Poker.html

Min applet klasse ser sådanne ud:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class PokerApplet extends JApplet implements ItemListener, ActionListener
{
  public static int antalKort = 5;
 
  private Deck deck;
  private boolean faceUp = false;     
  private boolean discardUp = false; 

  private CheckPoker cp;

  private Card[] tmpCard;
  private int vRet = 10;
 
  private JCheckBox discard[] = new JCheckBox[antalKort];
  private String discardTekst = "Discard";
 
  private String[] optionsLabel = {"Royal Flush", "Straight Flush",
    "Four-of-a-Kind", "Full House", "Flush Poker",
    "Straight","Three-of-a-Kind", "Two Pair"};
  private String[] scoreLabel = {" 10000","  5000","  3000","  2500","  2000",
    "  1500","  1000","  500"};
  private JLabel optionsJLabel[] = new JLabel[optionsLabel.length];
  private JLabel[] scoreJLabel = new JLabel[scoreLabel.length];
  private JPanel scorePanel = new JPanel();
  private JPanel optionsPanel = new JPanel();
 
  private JPanel tekstPanel = new JPanel();
  private JLabel jLabel1 = new JLabel();
  private JPanel centerPanel = new JPanel();
  private BorderLayout borderLayout1 = new BorderLayout();
  private JPanel buttonPanel = new JPanel();
  private JButton dealButton = new JButton();
 
  public void init()
  {           
    deck = new Deck(this);
    cp = new CheckPoker();
    tmpCard = new Card[antalKort];
    blandKort();           
    initOptions();
    Container felt = getContentPane();
    felt.setLayout(borderLayout1);   
   
    jLabel1.setText("Press \"deal\" to start a Game of Poker");
    jLabel1.setFont(new Font("Dialog", 1, 15));
    buttonPanel.setPreferredSize(new Dimension(100, 77));
    dealButton.setText("Deal");
    dealButton.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          dealButton_actionPerformed(e);
        }
      });
    buttonPanel.add(dealButton, null);
    tekstPanel.add(jLabel1, null);
    tekstPanel.setBackground(new Color(233, 246, 255));
    centerPanel.setBackground(new Color(233, 246, 255));
    buttonPanel.setBackground(new Color(233, 246, 255));
    felt.add(tekstPanel, BorderLayout.NORTH); 
    felt.add(centerPanel, BorderLayout.CENTER);
    felt.add(buttonPanel, BorderLayout.SOUTH);
  }     
 
  public Image cardImage(String s)
  {   
    Image tmpCard = getImage(getCodeBase(),"cards\\" + s + ".gif");   
    return tmpCard;
  }

  public void blandKort()
  {
    deck.swap();   
    deal();   
    faceUp = true;
    discardUp = false;
  }

  public void deal()
  {   
    for(int i = 0; i < 5; i++)
    {
      tmpCard[i] = deck.dealOneCard(faceUp);             
    }       
    discardUp = true;
    repaint();
  }
  public void hint()
  {
    for(int i = 0; i < discard.length; i++)
    {     
      if(discard[i].isSelected())   
      {
        tmpCard[i] = deck.dealOneCard(faceUp);     
      }       
    }
    repaint();
    cp = new CheckPoker();
    cp.checking(tmpCard);
  } 

  public void clear()
  {
    for(int i = 0; i < discard.length; i++)
    {     
      if(discard[i].isSelected())
        discard[i].setSelected(false);
    }   
  }

  public void paint(Graphics screen)
  {
    super.paint(screen);   
    Graphics2D screen2D = (Graphics2D) screen;   
    for(int i = 0; i < tmpCard.length; i++)
    {
      screen2D.drawImage(tmpCard[i].toImage(),vRet,220,this);
      vRet += 75;
    }
    vRet = 10;   
  } 
  public void initOptions()
  {   
    optionsPanel.setBorder(BorderFactory.createTitledBorder("Ranked"));
    optionsPanel.setLayout(new BoxLayout(optionsPanel, BoxLayout.Y_AXIS));     
    for(int i = 0; i < optionsLabel.length; i++)
    {
      optionsJLabel[i] = new JLabel (optionsLabel[i]);     
      optionsPanel.add(optionsJLabel[i]);
      optionsPanel.setBackground(new Color(233, 246, 255));
      centerPanel.add(optionsPanel);
    }

    scorePanel.setBorder(BorderFactory.createTitledBorder("Score"));
    scorePanel.setLayout(new BoxLayout(scorePanel, BoxLayout.Y_AXIS));     
    for(int i = 0; i < scoreLabel.length; i++)
    {
      scoreJLabel[i] = new JLabel (scoreLabel[i]);     
      scorePanel.add(scoreJLabel[i]);
      scorePanel.setBackground(new Color(233, 246, 255));
      centerPanel.add(scorePanel);
    }
   
    for(int i = 0; i < antalKort; i++)
    {
      discard[i] = new JCheckBox(discardTekst);     
      discard[i].addItemListener(this);     
      discard[i].setBackground(new Color(233, 246, 255));
      buttonPanel.add(discard[i]);
    }
  }

  public void itemStateChanged(ItemEvent e)
  {   
    if(discardUp == true)
    {
      for(int i = 0; i < discard.length; i++)
      {     
        if(discard[i].isSelected())         
        {
          tmpCard[i].turnDown();         
        }
             
        else
          tmpCard[i].turnUp();                   
      }
      repaint();
    }   
  }
   
 
  static 
  {
    try
    {
      //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    }
    catch(Exception e)
    {
    }

  } 

  private void dealButton_actionPerformed(ActionEvent e)
  {
    if(dealButton.getText() == "Deal")
    {
      dealButton.setText("Hint");
      deal();
    }     
    else if(dealButton.getText() == "Hint")
    {     
      hint();     
      dealButton.setText("New Game");           
    }           
    else
    {
      clear();
      faceUp = false;
      blandKort();   
      dealButton.setText("Deal");
    }
  }

  public void actionPerformed(ActionEvent e)
  {
  }





} // PokerApplet slut

På forhånd tak...
Avatar billede di8leva Nybegynder
09. juli 2003 - 14:09 #1
hvis du pakker in alle dine filer i en jar-fil, og i din HTML-fil retter:
CODEBASE = http://home19.inet.tele.dk/fuddi/applet/Poker

til
CODEBASE = http://home19.inet.tele.dk/fuddi/applet/Poker/<jar-filen>.jar

så går det meget bædre
Avatar billede di8leva Nybegynder
09. juli 2003 - 14:10 #2
og, naturligtvis er det penere med

CODEBASE = "http://home19.inet.tele.dk/fuddi/applet/Poker/<jar-filen>.jar"
Avatar billede fuddi12 Nybegynder
09. juli 2003 - 14:12 #3
okay...men hvordan pakker jeg alle mine filen ind i en jar-fil? :)
Avatar billede di8leva Nybegynder
09. juli 2003 - 14:17 #4
normalt kan du gøra det med dit program (JDeveloper) men hvis det ikke virker åbner du en kommando-prompt og skriver "jar" och trycker enter
den skriver alt du behøver vide.
jeg tror syntaxen er noget a la:

jar -jvcf <navn>.jar /path/til/dine/classfiler/*.class

men kan ikke kontrollera førdi jeg har ikke java på denne maskin
Avatar billede arne_v Ekspert
09. juli 2003 - 14:17 #5
Du laver en jar fil med:

jar cvf navn-på-jar-fil class-filer
Avatar billede arne_v Ekspert
09. juli 2003 - 14:19 #6
Den laver $1 klassen fordi du har en anonym klasse (din action listener).

Og principielt bude det også virke med at uploade den class fil.

Men det er dog pænere at bruge jar-fil.
Avatar billede fuddi12 Nybegynder
09. juli 2003 - 14:53 #7
Mange tak nu blev jeg en delt klogere :)
Nu har jeg lavet en jar-fil med JDeveloper, som indeholder alle klasserne og gif bilederne. Men jeg for stadig en fejl på hjemmeside:
http://home19.inet.tele.dk/fuddi/applet/Poker/Poker.html
java.lang.ClassNotFoundException: PokerApplet.class
Min html kode:

<APPLET CODE = "PokerApplet.class" CODEBASE = "http://home19.inet.tele.dk/fuddi/applet/Poker/Poker.jar" HEIGHT="400" WIDTH="400">
    </APPLET>   
Skal jeg retter Applet code "PokerApplet.class?
Avatar billede arne_v Ekspert
09. juli 2003 - 15:05 #8
Prøv med:

CODE = "PokerApplet"
Avatar billede fuddi12 Nybegynder
09. juli 2003 - 15:12 #9
Det virker heller ik :(
Avatar billede di8leva Nybegynder
09. juli 2003 - 15:18 #10
skall kigge noer jeg kommer hjem til min egen computer =)
Avatar billede fuddi12 Nybegynder
09. juli 2003 - 15:19 #11
men tak for hjælpen...Jeg ved nu hvordan man laver en jar-fil :D
Avatar billede fuddi12 Nybegynder
09. juli 2003 - 15:20 #12
ok :) det lyder dejligt
Avatar billede di8leva Nybegynder
10. juli 2003 - 09:44 #13
fuddi >> ber om undskyld. Jeg hade ikke tid igår, men kigger på det idag =)

Det er stadvek problemer?
Avatar billede fuddi12 Nybegynder
10. juli 2003 - 14:13 #14
Hej :) og ja det er stadig et problem hehe, men du skal da ikke undskylde...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester