This is how i try to run my JDK via cmd but i always get en error:
______________________________________________________
Microsoft Windows XP [Version 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Elliona>cd desktop

C:\Documents and Settings\Elliona\Desktop>cd kirby

C:\Documents and Settings\Elliona\Desktop\kirby>path C:\java\bin

C:\Documents and Settings\Elliona\Desktop\kirby>javac payroll.java

C:\Documents and Settings\Elliona\Desktop\kirby>java payroll.java
Exception in thread "main" java.lang.NoClassDefFoundError: payroll/java

C:\Documents and Settings\Elliona\Desktop\kirby>
--------------------------------------------------------------------------------------

and this is my code... is there something wrong or missing?

import java.io.*;
import java.util.*;


public class payroll{
	public static void main(String args[]) throws Exception {

	File employee = new File("employee.txt");
	File dtr = new File("dtr.txt");
	PrintWriter pw = new PrintWriter(dtr);
	Scanner filter = new Scanner(employee);
	Scanner datain = new Scanner(System.in);
	
	String empCode, empName, empLevel;
	String covDate, covMonth, covYear;
	String days[] = {"Monday","Tuesday","Wednesday","Thursday","Friday"};
	String option;
	
	double empSalRate;
	double timeInA=0,timeOutA=0;
	double minLate=0,rph=0,dailyTime=0,weeklyTime=0;
	double dailyIncome=0,weeklyIncome=0,weeklyNet=0,weeklyIncomeA=0;
	double totalOt=0,otIncome=0,otTime=0,tax=0,sss=0,deductions=0,allowance=500;;
	double otIn,otInA=0,otOut,otOutA=0;
	int ctr=0;
	int timeIn, timeOut;

	//Asking for an employee Code:!!!!!!!!!!!!!!!!!!
	System.out.print("Enter an Employee Code:");
	empCode=datain.nextLine();

	
	while(filter.hasNext()){
		if(empCode.equals(filter.nextLine())){
		empName=filter.nextLine();
		empLevel=filter.nextLine();
		empSalRate=filter.nextDouble();

		System.out.println("*************************************");
		System.out.println("Employee Name:"+empName);
		System.out.println("Employee Level:"+empLevel);
		System.out.printf("Salary Rate :Php%.2f\n",empSalRate);
		System.out.println("*************************************");

		pw.println("***********************************");
		pw.println("Employee Code:"+empCode);
		pw.println("Employee Name:"+empName);
		pw.println("Employee Level:"+empLevel);
		pw.println("Salary Rate :Php"+empSalRate+"0");
		pw.println("***********************************");
	
	//Asking for timeIn and timeOut and screening undertime and late:!!!!!!
	
	do {
		System.out.println("------------------------------");
		System.out.print("Enter time in for "+days[ctr]+":");
		timeIn=datain.nextInt();
			if(timeIn>=1700)
				timeInA = 1700;
			else if(timeIn>=1600)
				timeInA = 1600;
			else if(timeIn>=1500)
				timeInA = 1500;
			else if(timeIn>=1400)
				timeInA = 1400;
			else if(timeIn>=1300)
				timeInA = 1300;
			else if(timeIn>=1200)
				timeInA = 1200;
			else if(timeIn>=1100)
				timeInA = 1100;
			else if(timeIn>=1000)
				timeInA = 1000;
			else if(timeIn>=900)
				timeInA = 900;
			else if(timeIn>=800)
				timeInA = 800;
			else if(timeIn<=800)
				{timeInA = 800;
				timeIn = 800;}
		pw.println("Enter time in for "+days[ctr]+"\t:"+timeIn);

		System.out.print("Enter tim out for "+days[ctr]+":");
		timeOut=datain.nextInt();
			if(timeOut>=1700)
				timeOutA = 1700;
			else if(timeOut>=1600)
				timeOutA = 1600;
			else if(timeOut>=1500)
				timeOutA = 1500;
			else if(timeOut>=1400)
				timeOutA = 1400;
			else if(timeOut>=1300)
				timeOutA = 1300;
			else if(timeOut>=1200)
				timeOutA = 1200;
			else if(timeOut>=1100)
				timeOutA = 1100;
			else if(timeOut>=1000)
				timeOutA = 1000;
			else if(timeOut>=900)
				timeOutA = 900;
			else if(timeOut>=800)
				timeOutA = 800;
			else if(timeOut<=800)
				{timeOutA = 800;
				 timeOut = 800;}
		pw.println("Enter time out for "+days[ctr]+"\t:"+timeOut);

		//Formula for dailyTime, weeklyTime and Late:!!!!!!!!!!!!!!!!
		if(timeIn>=1300) {
			minLate=0;
			dailyTime=((timeOutA-timeInA)/100)-minLate;
		}
		else {
			minLate=(timeIn-timeInA)/60;
			dailyTime=(((timeOutA-timeInA)/100)-minLate)-1;
		}
		
		rph=empSalRate/8;
		dailyIncome=dailyTime*rph;
		weeklyTime=weeklyTime+dailyTime;
		weeklyIncome=weeklyIncome+dailyIncome;
		System.out.println(" ");
		System.out.print("Is"+days[ctr]+" a holiday? [Yes=y/No=n]");
		option=datain.next();
			if(option.equals("n")) {
				System.out.println(" ");
				System.out.print("Enter Overtime in for "+days[ctr]+":");
				otIn=datain.nextInt();

				if(otIn>=2200)
					otInA=2200;
				else if(otIn>=2100)
					otInA=2100;
				else if(otIn>=2000)
					otInA=2000;	
				else if(otIn>=1900)
					otInA=1900;
				else if(otIn>=1800)
					otInA=1800;				
				else if(otIn>=1700)
					otInA=1700;
			pw.println("Enter OverTime in for "+days[ctr]+"\t:"+otIn);
		
			System.out.print("Enter Overtime out for "+days[ctr]+": ");
			otOut=datain.nextInt();
			if(otOut>=2200)
				otOutA=2200;
			else if(otOut>=2100)
				otOutA=2100;
			else if(otOut>=2000)
				otOutA=2000;
			else if(otOut>=1900)
				otOutA=1900;
			else if(otOut>=1800)
				otOutA=1800;
			else if(otOut>=1700)
				otOutA=1700;
			pw.println("Enter OverTime out for "+days[ctr]+"\t:"+otOut);
			System.out.println("--------------------------------");
		otTime=(otOutA-otInA)/100;
		totalOt=totalOt+otTime;
		}
			else {
				rph=empSalRate/8;
				dailyIncome=(dailyTime*rph)*1.1;
		}
			weeklyIncomeA=weeklyIncomeA+dailyIncome;
		ctr=ctr+1;// or ctr++
		} while(ctr<=4);
	
			System.out.println("*******************************");	
			System.out.print("Enter Coverage Date: ");
			covMonth=datain.next();
			covDate=datain.next();
			covYear=datain.next();

			otIncome=(totalOt*rph)*1.1;
			weeklyIncomeA=(weeklyIncomeA+otIncome);
			tax=weeklyIncome*.1;
			sss=weeklyIncome*.01;
			deductions=(tax+sss);
			weeklyNet=(weeklyIncomeA-deductions)+allowance;
			pw.println("********************************");
			pw.print("Enter Coverage Date: ");
			System.out.print(" ");
			
		System.out.println("========================================");
		System.out.println("========  TESDA Payroll System   =======");
		System.out.println("========================================");
		System.out.println("Employee Name: "+empName);
		System.out.println("Employee Code: "+empCode);
		System.out.println("Employee Level: "+empLevel);
		System.out.printf("Salary Rate :Php %.2f",empSalRate);
		System.out.println("/day");

		System.out.println("*****************************************");
		System.out.println("Date Covered\t: "+covMonth+" "+covDate+","+covYear);
		System.out.printf("TOtal Number of Work Hours: %.0f",weeklyTime);
		System.out.println(" Hours");
		System.out.printf("OverTime Hours\t: %.0f",totalOt);
		System.out.println(" Hourse");
		System.out.printf("Regular Income\t: "+"Php %.2f\n",weeklyIncome);
		System.out.printf("OverTime Income\t: "+"Php %.2f\n",otIncome);
		System.out.printf("Gross Income\t: "+"Php %.2f\n",weeklyIncomeA);
		System.out.println("Deductions:");
		System.out.printf(" *Tas: %.2f\n",tax);
		System.out.printf(" *SSS: %.2f\n",sss);
		System.out.println("******************************************");
		System.out.printf("****  Net Income: Php %.2f",weeklyNet);
		System.out.println(" *********");
		System.out.println("******************************************");
			pw.close();
			}
		     } 
			
			filter.close();
		}
	}

Dani AI

Generated

Short answer: the JVM was given a source filename instead of a class name. and are correct — you must run the JVM with the compiled class name (no .java extension). Passing a dotted name confuses the launcher into treating the parts as package/class, which produces the NoClassDefFoundError.

Why this happens: the java launcher expects a fully‑qualified class name (packages separated by dots). Supplying something like payroll.java makes the runtime look for a class named java inside a package payroll (the error prints that as payroll/java). The JVM only loads .class files reachable on the classpath, so the usual flow is: compile the source to a .class, then invoke the JVM with the class name (not the source file). If your source declares a package, the .class must reside in matching subfolders and you must run using the package-qualified name.

Quick checklist to fix the immediate problem

  • Recompile and confirm a payroll.class file exists in your working folder.
  • Invoke the JVM with the class name (no .java extension).
  • Be in the directory that contains the .class or ensure . is on the classpath (a custom CLASSPATH can omit it).
  • If you added a package line, move the .class into the corresponding directory tree and run with the package-qualified name.
  • Check case sensitivity (file/class names matter on Unix-like systems) and verify you’re using the expected JRE/JDK (if PATH/CLASSPATH were changed you might be invoking the wrong runtime).
  • If the class exists but still fails at runtime, look for exceptions in static initializers or missing dependent classes — those also cause NoClassDefFoundError.

Optional: follow Java naming conventions (capitalize class names like Payroll) to reduce confusion between file and symbol names.

Recommended Answers

All 8 Replies

No problem in the class. When you run the program you need to use just the class name drop the .java file extension. javac invokes the compiler and transforms the source file (.java) into a bytecode file (.class) then you run the program by supplying the compiled bytecode file (.class) to the java command that invokes the JVM.

You don't specify the .java extension when executing Java programs since you are no longer concerned with .java files [the javac command compiles your Java files to the bytecode which is placed in .class files). Read the documentation of the `java' command for more details.

Edit: D'oh, beaten.

whats the format inside ur employee.txt??

whats the format inside ur employee.txt??

Whats that gotta do with the "ClassDefNotFound" error in java?

i can run the program but it stucks with the "Enter Employee Code:"

No actually running itself was his problem, since he was using the .java extension to the filename while running.

how to start the payroll system? can you give me a basic codes?

shela: this thread is 4 years old. no point in reviving it.
also: the code to run is in the original post. so what 'basic code' are you looking for?

if you don't understand that code, or don't agree with how it was written, do what anyone else would do: write your own.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.