2011-03-22 30 views
-1

我有一个新的错误,下面的代码。最初我有一些名字不同的类。我改变了他们,但新的错误出现了。下面的代码无法正确运行,因为我不得不删除其中的一部分。它有太多的字符。希望我没有摆脱需要修复的部分。java.lang.NoClassDefFoundError:

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.util.*; 
import java.io.*; 
import java.text.SimpleDateFormat; 
import java.text.DecimalFormat; 
import javax.swing.ButtonGroup; 
import java.awt.FlowLayout; 

public class VolCalc extends JFrame implements ActionListener{ 
    private JTabbedPane jtabbedPane; 
    private JPanel general; 
    private JPanel pools; 

    private JPanel tempCalc; 
    private JPanel options; 
    private JPanel hotTub; 
    private JComponent date; 
    JTextField lengthText, widthText, depthText, volumeText; 

    public void CalcVolume(){ 

     JPanel customers = new JPanel(); 

     setTitle("Pools"); 
     setSize(300, 200); 

     JPanel topPanel = new JPanel(); 
     topPanel.setLayout(new BorderLayout()); 
     getContentPane().add(topPanel); 

     createGeneral(); 
     createPools(); 
     createOptions(); 

     jtabbedPane = new JTabbedPane(); 
     jtabbedPane.addTab("General", general); 
     jtabbedPane.addTab("Pools", pools); 

     jtabbedPane.addTab("Temp Calculator", tempCalc); 
     jtabbedPane.addTab("Options", options); 
     jtabbedPane.addTab("Hot Tubs", hotTub); 

     topPanel.add(jtabbedPane, BorderLayout.CENTER); 
    } 

    /*  CREATE GENERAL */ 

    public void createGeneral(){ 
     general = new JPanel(); 
     general.setLayout(null); 

     JLabel dateLabel = new JLabel("Todays Date"); 
     dateLabel.setBounds(10, 15, 150, 20); 
     general.add(dateLabel); 

     JFormattedTextField date = new JFormattedTextField( 
     java.util.Calendar.getInstance().getTime()); 
     date.setEditable(false); 
     date.setBounds(150,15,150,20); 
     general.add(date); 

     JButton Exit = new JButton("Exit"); 
     Exit.setBounds(10,80,150,30); 
     Exit.addActionListener(this); 
     Exit.setBackground(Color.red); 
     general.add(Exit); 
    } 

    /*  CREATE POOLS */ 

    public void createPools(){ 
     pools = new JPanel(); 
     pools.setLayout(null); 

     JLabel lengthLabel = new JLabel("Enter the length of swimming pool(ft):"); 
     lengthLabel.setBounds(10, 15, 260, 20); 
     pools.add(lengthLabel); 

     lengthText = new JTextField(); 
     lengthText.setBounds(260, 15, 150, 20); 
     pools.add(lengthText); 

     JLabel widthLabel = new JLabel("Enter the width of the swimming pool(ft):"); 
     widthLabel.setBounds(10, 60, 260, 20); 
     pools.add(widthLabel); 

     widthText = new JTextField(); 
     widthText.setBounds(260, 60, 150, 20); 
     pools.add(widthText); 

     JLabel depthLabel = new JLabel("Enter the average depth the swimming pool(ft):"); 
     depthLabel.setBounds(10, 100, 260, 20); 
     pools.add(depthLabel); 

     depthText = new JTextField(); 
     depthText.setBounds(260, 100, 150, 20); 
     pools.add(depthText); 

     JLabel volumeLabel = new JLabel("The pool volume is:(ft ^3"); 
     volumeLabel.setBounds(10, 200, 260, 20); 
     pools.add(volumeLabel); 

     volumeText = new JTextField(); 
     volumeText.setBounds(260, 200, 150, 20); 
     volumeText.setEditable(false); 
     pools.add(volumeText); 

     JButton calcVolume = new JButton("Calculate Volume"); 
     calcVolume.setBounds(150,250,150,30); 
     calcVolume.addActionListener(this); 

     pools.add(calcVolume); 

     JButton Exit = new JButton("Exit"); 
     Exit.setBounds(350,250,80,30); 
     Exit.addActionListener(this); 
     Exit.setBackground(Color.white); 
     pools.add(Exit); 
    } 

    public void createOptions() 
    { 
     options = new JPanel(); 
     options.setLayout(null); 
     JLabel labelOptions = new JLabel("Change Company Name:"); 
     labelOptions.setBounds(150, 50, 150, 20); 
     options.add(labelOptions); 

     JTextField newTitle = new JTextField(); 
     newTitle.setBounds(150, 70, 150, 20); 
     options.add(newTitle); 

     JButton newName = new JButton("Set New Name"); 
     newName.setBounds(100,115,150,30); 
     newName.addActionListener(this); 
     newName.setBackground(Color.yellow); 
     options.add(newName); 

     JButton Exit = new JButton("Exit"); 
     Exit.setBounds(250,115,80,30); 
     Exit.addActionListener(this); 
     Exit.setBackground(Color.red); 
     options.add(Exit); 
    } 

    public void actionPerformed(ActionEvent event){ 
     JButton button = (JButton)event.getSource(); 
     String buttonLabel = button.getText(); 

     if ("Exit".equalsIgnoreCase(buttonLabel)){ 
      Exit_pressed(); return; 
     } 

     if ("Set New Name".equalsIgnoreCase(buttonLabel)){ 
      New_Name(); 
      return; 
     } 

     if ("Calculate Volume".equalsIgnoreCase(buttonLabel)){ 
      Calculate_Volume(); return; 
     } 

     if ("Customers".equalsIgnoreCase(buttonLabel)){ 
      Customers(); return; 
     } 

     if ("Calculate Volume".equalsIgnoreCase(buttonLabel)){ 
      Calculate_Volume(); 
      return;                        
     } 

     if ("Options".equalsIgnoreCase(buttonLabel)){ 
      Options(); 
      return; 
     } 
    } 

    private void Exit_pressed(){ 
     System.exit(0); 
    } 
    private void New_Name(){ 
     System.exit(0); 
    } 
    private void Calculate_Volume(){ 
     String lengthString, widthString, depthString; 
     int length=0; 
     int width=0; 
     int depth=0; 

     lengthString = lengthText.getText(); 
     widthString = widthText.getText(); 
     depthString = depthText.getText(); 
     if (lengthString.length() < 1 || widthString.length() < 1 || depthString.length() < 1){ 
      volumeText.setText("Error! Must enter in all three numbers!!"); 
      return;                          
     } 
     length = Integer.parseInt(lengthString); 
     width = Integer.parseInt(widthString); 
     depth = Integer.parseInt(depthString); 

     if (length != 0 || width != 0 || depth != 0){ 
      volumeText.setText((length * width * depth) + ""); 
     } 
     else{ 
       volumeText.setText("Error! Must Enter in all three numbers!!"); 
       return; 
      } 
    } 

    private void Customers(){ 
    } 

    private void Options(){ 
    } 

    public static void main(String[] args){ 
     JFrame frame = new VolCalc(); 
     frame.setSize(525, 350); 
     frame.setVisible(true); 
    } 
} 

犯错:

java.lang.NoClassDefFoundError: VolCac Caused by: java.lang.ClassNotFoundException: VolCac at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Exception in thread "main"

+0

你可以发布堆栈跟踪吗? – Bartzilla 2011-03-22 17:22:44

+1

@Bartzilla,对不起,什么是堆栈跟踪? – Mike 2011-03-22 17:25:04

+12

所以你有一些错误(你没有给我们详细的信息),你改变了一些东西(重命名一些类,但我们不知道哪些),现在你有新的错误(你还没有给出我们的细节)。部分问题可能出现在您未发布的代码中。总而言之,这让我们很难回答这个问题。请阅读http://tinyurl.com/so-hints - 我们不是通灵。 – 2011-03-22 17:25:22

回答

10

我的猜测是您尝试使用之前的启动配置,它使用的是旧名称。从上下文菜单启动类(或者使用适当的键盘快捷方式,现在我不记得了 - 类似于Ctrl-Alt-X,J)将使用名称,并可能解决该问题。

或者,您可以使用“运行”按钮旁边的下拉列表并编辑启动配置,以告诉它启动的类名是否正确。

+0

乔恩Skeet再次做它! – Moshe 2011-03-23 17:12:15

4

不知道你是怎么实例化这一点,但堆栈跟踪注明“VolCac”未找到类。在您粘贴的代码中,您的课程名为“VolCalc”...