java.lang.NoClassDefFoundError:

时间:2011-03-22 17:21:19

标签: java eclipse

我在下面的代码中遇到了新的错误。最初我有一些名字不同的课程。我改变了它们,但出现了新的错误。下面的代码将无法正常运行,因为我必须删除其中的一些内容。它有太多的人物。希望我没有摆脱需要修复的部分。

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); 
    }
}

ERRS:

  

java.lang.NoClassDefFoundError:VolCac引起:java.lang.ClassNotFoundException:java.net上的java.security.AccessController.doPrivileged(Native Method)的java.net.URLClassLoader $ 1.run(未知来源)中的VolCac。位于sun.misc.Launcher的java.lang.ClassLoader.loadClass(未知来源)中的URLClassLoader.findClass(未知来源)$ java.lang.ClassLoader.loadClass中的AppClassLoader.loadClass(未知来源)(未知来源)线程中的异常“main “

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:4)

不知道如何实例化这个,但堆栈跟踪表明找不到“VolCac”类。在您粘贴的代码中,您的班级名为“VolCalc”......