线程 "main" java.lang.NoClassDefFoundError 中的 NetBeans 异常
NetBeans Exception in thread "main" java.lang.NoClassDefFoundError
我在同一个 java 文件中有两个 class。
B_BurglerAndMatches class 是 java 文件名的名称。
另一个 class 是 Con。
我确实需要将两个 classes 放在同一个文件中,因为它是在线提交。多次出现此错误,我的解决方案是尝试合并为一个 class。但是我确信有办法 o
package CF_B;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Con implements Comparable<Con>{
int box;
int mat;
Con(int box, int mat) {
this.box = box;
this.mat = mat;
}
int matches(){
return box*mat;
}
@Override
public int compareTo(Con o) {
return this.matches()-o.matches();
}
}
public class B_BurglerAndMatches {
public static void main(String [] args){
Scanner in = new Scanner(System.in);
int space = in.nextInt();
int numC = in.nextInt();
ArrayList<Con> conts = new ArrayList();
for (int i = 0; i < numC; i++) {
Con c = new Con(in.nextInt(),in.nextInt()); // <--- error points here
conts.add(c);
}
Collections.sort(conts);
int i = conts.size()-1;
int matches = 0;
int temp = 0;
int Left_boxes = 0;
while (space > 0 && i>=0) {
temp = space - conts.get(i).box; //no of boxes with no space
// System.out.println("i "+i);
// System.out.println("temp " + temp);
if (temp < 0) {
Left_boxes = conts.get(i).box + temp; //no of boxes to calculate
matches = matches + (Left_boxes * conts.get(i).mat);
} else {
matches = matches + conts.get(i).matches();
}
// System.out.println("matches "+matches);
space = space - conts.get(i).box;
i--;
}
System.out.println(matches);
}
}
控制台中出现的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: CF_B/Con
at CF_B.B_BurglerAndMatches.main(B_BurglerAndMatches.java:44)
Caused by: java.lang.ClassNotFoundException: CF_B.Con
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Java Result: 1
尝试搜索许多其他关于此类错误的帖子,但没有找到与我的情况相符的帖子。任何解释将不胜感激
如果你想尝试我的代码,这是输入:
7 3
5 10
2 5
3 6
我怀疑这是因为 CON 是 windows 上的一个特殊文件。尝试重命名您的 class.
我在同一个 java 文件中有两个 class。 B_BurglerAndMatches class 是 java 文件名的名称。 另一个 class 是 Con。 我确实需要将两个 classes 放在同一个文件中,因为它是在线提交。多次出现此错误,我的解决方案是尝试合并为一个 class。但是我确信有办法 o
package CF_B;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Con implements Comparable<Con>{
int box;
int mat;
Con(int box, int mat) {
this.box = box;
this.mat = mat;
}
int matches(){
return box*mat;
}
@Override
public int compareTo(Con o) {
return this.matches()-o.matches();
}
}
public class B_BurglerAndMatches {
public static void main(String [] args){
Scanner in = new Scanner(System.in);
int space = in.nextInt();
int numC = in.nextInt();
ArrayList<Con> conts = new ArrayList();
for (int i = 0; i < numC; i++) {
Con c = new Con(in.nextInt(),in.nextInt()); // <--- error points here
conts.add(c);
}
Collections.sort(conts);
int i = conts.size()-1;
int matches = 0;
int temp = 0;
int Left_boxes = 0;
while (space > 0 && i>=0) {
temp = space - conts.get(i).box; //no of boxes with no space
// System.out.println("i "+i);
// System.out.println("temp " + temp);
if (temp < 0) {
Left_boxes = conts.get(i).box + temp; //no of boxes to calculate
matches = matches + (Left_boxes * conts.get(i).mat);
} else {
matches = matches + conts.get(i).matches();
}
// System.out.println("matches "+matches);
space = space - conts.get(i).box;
i--;
}
System.out.println(matches);
}
}
控制台中出现的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: CF_B/Con
at CF_B.B_BurglerAndMatches.main(B_BurglerAndMatches.java:44)
Caused by: java.lang.ClassNotFoundException: CF_B.Con
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Java Result: 1
尝试搜索许多其他关于此类错误的帖子,但没有找到与我的情况相符的帖子。任何解释将不胜感激
如果你想尝试我的代码,这是输入:
7 3
5 10
2 5
3 6
我怀疑这是因为 CON 是 windows 上的一个特殊文件。尝试重命名您的 class.