2013-12-11 34 views
0

我无法让我的applet在我的网站上运行。这是我第一次将一个applet嵌入网站,我不知道发生了什么问题。将applet放到网站上时发生java.lang.reflect.invocationtargetexception错误

我创建以下以下网站的说明.jar文件:https://eyeasme.com/Shayne/HTML5_APPLETS/

这里是Java小程序的代码。

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.Random; 

public class TicTacToe extends JFrame 
{ 
private JButton button [][] = new JButton [3][1]; 
private boolean checkerO [][] = new boolean [3][2]; 
private boolean checkerX [][] = new boolean [3][3]; 
private JPanel panel; 
private final int WINDOW_WIDTH = 200; 
private final int WINDOW_HEIGHT = 200; 
private int turn = 1; 

public TicTacToe() 
{ 
    setTitle ("Tic-Tac-Toe"); 
    setSize (WINDOW_WIDTH,WINDOW_HEIGHT); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    //create and register an event listener with all buttons 

    for(int i = 0; i <= 2; i++) 
    { 
     for(int j = 0; j <= 2; j++) 
     { 
      button [i][j] = new JButton(); 
      button [i][j].addActionListener(new ButtonListener()); 
      button [i][j].setFont(new Font("Arial", Font.PLAIN, 35)); 
     } 
    } 

    for(int i = 0; i <= 2; i++) 
    { 
     for(int j = 0; j <= 2; j++) 
     { 
      checkerO [i][j] = false; 
     } 
    } 

    for(int i = 0; i <= 2; i++) 
    { 
     for(int j = 0; j <= 2; j++) 
     { 
      checkerX [i][j] = false; 
     } 
    } 

    //create a panel, work on the layout and add the buttons 

    panel = new JPanel(); 
    GridLayout myLayout = new GridLayout(3,3); 
    panel.setLayout(myLayout); 
    for (int i = 0; i <= 2; i++) 
    { 
     for(int j = 0; j <= 2; j++) 
     { 
      panel.add(button[i][j]); 
     } 
    } 

    //add panel to content pane 

    add(panel); 

    //display window 

    setVisible(true); 
} 

private class ButtonListener implements ActionListener 
{ 
    public void actionPerformed (ActionEvent e) 
    { 
     //determine which button is clicked 
     for (int i = 0; i <= 2; i++) 
     { 
      for (int j = 0; j <= 2; j++) 
      { 
       if (e.getSource() == button[i][j]) 
       {      
        //Check if the chosen button has already been picked. 

        if (checkerX[i][j] || checkerO[i][j]) 
        { 
         JOptionPane.showMessageDialog(null, "I'm sorry, Dave. I'm afraid I can't do that."); 
        } 
        else if (turn == 1 || turn == 3 || turn == 5 || turn == 7 || turn == 9) 
        { 
         button[i][j].setText("X"); 
         checkerX[i][j] = true; 
         turn++; 
        } 

        //Checks all possible combinations for X to see if X won 

        if ((checkerX[0][0] == true && checkerX[0][4] == true && checkerX[0][5] == true) || (checkerX[1][0] == true && checkerX[1][6] == true && checkerX[1][7] == true) || (checkerX[2][0] == true        && checkerX[2][8] == true && checkerX[2][9] == true) || (checkerX[0][0] == true && checkerX[1][0] == true && checkerX[2][0] == true) || (checkerX[0][10] == true && checkerX[1][11] == true        && checkerX[2][12] == true) || (checkerX[0][13] == true && checkerX[1][14] == true && checkerX[2][15] == true) || (checkerX[0][0] == true && checkerX[1][16] == true && checkerX[2][17] ==        true) || (checkerX[0][18] == true && checkerX[1][19] == true && checkerX[2][0] == true)) 
        { 
         JOptionPane.showMessageDialog(null, "X wins the game."); 
         System.exit(0); 
        } 


        //If X hasn't won, run the AI 

        runAI(); 

        //If turn goes past 9, it means it's a tie 

        if (turn == 10) 
        { 
         JOptionPane.showMessageDialog(null, "It's a tie."); 
         System.exit(0); 
        }     
       } 
      } 
     } 
    } 

    public void runAI() 
    { 
     Random generator = new Random(); 
     boolean picked = false; 
     if (turn == 2 || turn == 4 || turn == 6 || turn == 8) 
     { 
      while (picked == false) 
      { 
       int position1 = generator.nextInt(3); 
       int position2 = generator.nextInt(3); 

       //If the position is already picked, the AI will roll a random number again. 

       if (checkerX[position1][position2] || checkerO[position1][position2]) 
       { 

       } 

       //If the position is empty, put an O. 

       else 
       { 
        button[position1][position2].setText("O"); 
        checkerO[position1][position2] = true; 
        turn++; 
        picked = true; 
       } 
      } 

     } 

     //Checks all possible combinations for O to see if O won 

     if ((checkerO[0][0] == true && checkerO[0][20] == true && checkerO[0][21] == true) || (checkerO[1][0] == true && checkerO[1][22] == true && checkerO[1][23] == true) || (checkerO[2][0] == true     && checkerO[2][24] == true && checkerO[2][25] == true) || (checkerO[0][0] == true && checkerO[1][0] == true && checkerO[2][0] == true) || (checkerO[0][26] == true && checkerO[1][27] == true     && checkerO[2][28] == true) || (checkerO[0][29] == true && checkerO[1][30] == true && checkerO[2][31] == true) || (checkerO[0][0] == true && checkerO[1][32] == true && checkerO[2][33] ==       true) || (checkerO[0][34] == true && checkerO[1][35] == true && checkerO[2][0] == true)) 
     { 
      JOptionPane.showMessageDialog(null, "O wins the game."); 
      System.exit(0); 
     } 
    } 
} 


public static void main (String [] args) 
{ 
    TicTacToe ttt = new TicTacToe(); 
} 
} 

有一点格式化的问题时,我想在这里粘贴上进行,因此可能会在代码中的一些错别字。但该程序实际上以.exe文件运行。

这里的HTML代码:

<html> 
<head> 
    <title>Minigames for All</title> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
</head> 

<body> 
    <h2 id="header">Welcome to Minigames for All.</h2> 
    <hr> 


    <object type="application/x-java-applet" height="300" width="550"> 
     <param name="code" value="TicTacToe" /> 
     <param name="archive" value="applet/TicTacToe.jar" /> 
     Applet failed to run. No Java plug-in was found. 
    </object> 

    <hr> 
    <table> 
     <tbody> 
      <tr> 
       <td><a href="rps.html">Rock, Paper, Scissors</td> 
       <td><a href="random.html">Guess the Number</td> 
       <td><a href="ttt.html">Tic Tac Toe</td> 
      </tr> 


      <tr> 
       <td><a href="flip.html">Flip a Coin</td> 
       <td><a href="rpg.html">Slime RPG</td> 
       <td><a href="shoot.html">Space Shooter</td> 
      </tr> 

      <tr> 
       <td>&nbsp</td> 
       <td><a href="index.html">Home Page</td> 
       <td>&nbsp</td> 
      </tr> 
     </tbody> 
    </table> 
</body> 
</html> 

清单文件:

清单-版本:1.0

创建-者:1.7.0_21公司(Oracle Corporation)

错误信息: http://puu.sh/5J4z1.png

+0

请显示您正在使用的HTML,jar文件清单和* exact *错误。 –

+0

添加了有关错误,HTML和清单的更多信息。 – user3068063

+0

错误消息有一个“详细信息”按钮 - 你点击它吗? –

回答

1

我注意到的第一件事是

TicTacToe extends JFrame 

TicTacToe extends JApplet // or even Applet. 

你确定你有一个Applet

+0

不太确定...我最初创建的程序是一个.java文件。在作为applet使用时,代码有没有区别? – user3068063

+0

@ user3068063:是的,你必须创建一个扩展'Applet'或'JApplet'的类......从根本上说*你现在*不*有一个applet。 –

+0

@ user3068063目前您拥有一个独立的Java应用程序。 Java [Applet](http://stackoverflow.com/tags/applet/info)指的是一种特定类型的Java应用程序,它不是独立的,而是运行在“Applet”容器的上下文中的这是[通常](http://docs.oracle.com/javase/7/docs/technotes/tools/windows/appletviewer.html)网页浏览器)。 –

相关问题