简体   繁体   中英

java.lang.NoClassDefFoundError:

I have a new error with the code below. Originally I had some classes that were named different. I changed them, but new errors arose. The code below will not run correctly because I had to remove some of it for the post. It had too many characters. Hopefully I didn't get rid of the part that is needed to be fixed.

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 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"

My guess is that you tried to use a previous launch configuration, which was using the old name. Launching the class from the context menu (or using the appropriate keyboard shortcut, which I can't remember now - something like Ctrl-Alt-X, J) will use the new name, and may solve the problem.

Alternatively, you could use the dropdown next to the "Run" button and edit the launch configuration to tell it the correct class name to launch.

Don't know how you instantiate this but the stacktrace indicate the "VolCac" class is not found. In the code you pasted here, your class is named "VolCalc"...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM