Eclipse报错: 找不到或无法加载主类 java.lang.ClassNotFoundException

今天在eclipse运行一个新建Java项目时报错:java.lang.ClassNotFoundException,查看了一下,运行后在workspace里没有编译成class文件,而其他以前的项目能正常运行。
Eclipse报错: 找不到或无法加载主类 java.lang.ClassNotFoundException_第1张图片

排除错误

1. 又新建了一个简单的类

public class debug2 {
    public static void main(String[] args) {
        int a=1;
        int b=3/a;
        System.out.print(b);
    }
}

在cmd测试,运行程序,结果如下,编译能正常进行,运行class文件时报错:java.lang.NoClassDefFoundError,说明此时是运行时出错,和eclipse里java.lang.ClassNotFoundException编译时出错不一样。
Eclipse报错: 找不到或无法加载主类 java.lang.ClassNotFoundException_第2张图片

2. 这个时候检查classpath和eclipse里的jdk变量,是一致的,说明不是环境变量不一致引起的问题。

3. 在一个旧Java项目修改一些代码,运行后的结果和原来一样,说明修改后的代码也无法编译,运行的是eclipse旧的已经编译好的文件。

可以运行的旧项目:

private static final long serialVersionUID=1L;
 private JPanel jContentPane=null;
 private JButton jButton=null;
 private int i=0;
 
 public Exercise6() {
  super();
  initialize();
 }
 
 private void initialize() {
  this.setSize(300,200);
  this.setContentPane(getJContentPane());
  this.setTitle("JFrame");
 }

Eclipse报错: 找不到或无法加载主类 java.lang.ClassNotFoundException_第3张图片

修改了Jfram标题后(setTitle(“JFram”)改成setTitle(“hhh”)),结果竟然不变:

private static final long serialVersionUID=1L;
 private JPanel jContentPane=null;
 private JButton jButton=null;
 private int i=0;
 
 public Exercise6() {
  super();
  initialize();
 }
 
 private void initialize() {
  this.setSize(300,200);
  this.setContentPane(getJContentPane());
  this.setTitle("hhh");
 }

Eclipse报错: 找不到或无法加载主类 java.lang.ClassNotFoundException_第4张图片

解决

到这里明白了是eclipse里的编译问题,检查了一下,原来是没有设置成自动构建,Project–>Build Automatically就可以了。
Eclipse报错: 找不到或无法加载主类 java.lang.ClassNotFoundException_第5张图片

关于自动构建

Eclipse和Idea都有自动构建的功能,可以在一定程度上减少程序员自动去编译代码所消耗的时间。但是每次ctrl+s都会自动编译,再加上eclipse启动时也会自动的build workspace,当工作空间项目列表打开的项目较多时,eclipse会构建得非常缓慢。

取消自动构建会导致无法自动编译,如果是Java Web项目会导致没有发布到Tomcat容器中去,需要手动Build Project,如果更改了代码,应该手动进行构建:右键项目–>Build Porject。
Eclipse报错: 找不到或无法加载主类 java.lang.ClassNotFoundException_第6张图片

你可能感兴趣的:(笔记)