Error: Could not find or load main class <<< Why do I get this error?
I can't seem to get this code to work correctly. This is the error I keep getting:
Error: Could no开发者_开发问答t find or load main class.
What causes this?
Payroll3.java
// A program to calculate and print the department, name, and pay of an employee.
import java.util.Scanner; //program uses the Scanner class
import java.io.*;
class main
{
public class Payroll3
{
// main method begins execution of Java program.
public void main(String args[])
{
// create Scanner to obtain input from the command window
Scanner input = new Scanner (System.in);
double number1; // first number to multiply
double number2; // second number to multiply
double product; // product of number1 and number2
while(true){ // infinite loop
System.out.print("Enter Department name: "); //prompt
String name = input.nextLine(); // read name from user
if(name.equals("stop")) // exit the loop
break;
System.out.print("Enter number of employees: "); // prompt
number1 = input.nextDouble(); // read first number from user
input.nextLine();
while( number1 <= -1){
System.out.print("Enter positive number of employees:"); // prompt
number1 = input.nextDouble(); // read first number from user
input.nextLine();
} /* while statement with the condition that negative numbers are entered
user is prompted to enter a positive number */
System.out.print("Enter average salary: "); // prompt
number2 = input.nextDouble(); // read second number from user
input.nextLine();
while( number2 <= -1){
System.out.print("Enter positive number for average salary:"); // prompt
number2 = input.nextDouble(); // read first number from user
input.nextLine();
} /* while statement with the condition that negative numbers are entered
user is prompted to enter a positive number */
// make department object
Department dept = new Department(name,number1,number2);
product = number1 * number2; // multiply numbers
System.out.println("Department name:" + name); // display Department name
System.out.printf("Payroll is: $%.2f\n", product); // display product
} // end while method
} // end method main
}/* end class Payroll3 */
}
// Stores data about an department
class Department {
//fields
String name;
double number1;
double number2;
// constructor
public Department(String name, double number1, double number2) {
this.name = name;
this.number1 = number1;
this.number2 = number2;
}
// returns the pay:
public double getPay() {
return number1*number2;
}
// getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getnumber1() {
return number1;
}
public void setNumber1(double number1) {
this.number1 = number1;
}
public double getNumber2() {
return number2;
}
public void setNumber2(double number2) {
this.number2 = number2;
}
}
Class must be public
and main
must be static
public static void main(String argv[])
And you can't have nested main class. At least it's probably not what you expect. Why don't you start with simple tutorial and expand it with your code?
while Running the program just type java program_name
but NOT java program_name.java
more detail is required
did you complied it?
Error: Could not find or load main class.?
it seems that you just run the java with the source file
java test.java # wrong
Exception in thread "main" java.lang.NoClassDefFoundError: test/java
Caused by: java.lang.ClassNotFoundException: test.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: test.java. Program will exit.
# correct
javac yourfile.java
java yourfile
Also you need to changed your file as Alex Gitelman told.
I simplified your code to reveal the problem inside.
// Payroll3.java
class main
{
public class Payroll3
{
public void main(String args[])
{
}
}
}
First, we can see that the outmost suspicious class main
hide your needed class and the main function. You need to remove the class main
.
Second, main function need to be declared as class-function instead of instance-function, because it is not bound to any instance. In java, we use static
to declare a class-variable/class-function. So you need to declare the main
as public static void main(String argv[])
After the changes, you can get:
// Payroll3.java
public class Payroll3
{
public static void main(String argv[])
{
}
}
The problem is that the main
function needs to be declared as public static void main(String[] args)
, not public void main(String[] args)
.
the name of the file should be used when compiling it i.e. javac test.java where test.java is the file name. And when running the file the name of the class is the file should be used for example if it is class Test{} then java test
精彩评论