在我的_Mathematics
包裹中。我已将源文件分成bin
和src
文件夹,如下所示:
_Mathematics ->
Formulas ->
src ->
// source files containing mathematical formulas...
// Factorial.java
bin ->
// Factorial.class
// class files containing mathematical formulas...
Problems ->
src ->
// Permutation.java
// source files containing mathematical problems...
bin ->
// Permutation.class
// class files containing mathematical problems...
但是,当我使用main()
编译文件时,会出现如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: _Mathematics\Problems
\bin\Permutations (wrong name: _Mathematics/Problems/bin/Permutations)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
以下是Permutation.java
文件,其中main()
位于此处。
package _Mathematics.Problems.bin;
import _Mathematics.Formulas.bin.Factorial;
public class Permutations {
public static void main(String args[]) {
System.out.printf("There are 10 students. Five are to be chosen and seated in a row for a picture.%nHow many linear arrangements are possible?%n" +
(new Factorial(10).r/new Factorial(5).r) + "%n%n");
System.out.printf("How many permutations are there in the word 'permutation'?%n" +
new Factorial(11).r + "%n%n");
}
}
这是我的另一个文件,Factorial.java
:
package _Mathematics.Formulas.bin;
public class Factorial {
public int o;
public long r;
public Factorial(int num) {
long result = 1;
for(int i = num; i > 0; i--)
result *= i;
this.o = num;
this.r = result;
}
}
我应该保留package _Mathematics.Problems.bin;
,还是应该将其更改为package _Mathematics.Problems.src;
?
我的代码出了什么问题?
非常感谢帮助。
答案 0 :(得分:1)
对于类文件,您需要维护程序所期望的文件夹结构
_Mathematics \问题\ BIN \排列组合
答案 1 :(得分:1)
值得一提的两个问题:
bin
目录通常用于可执行文件。这是因为(通常)您的操作系统将具有指向这些目录的环境设置,因此当您尝试运行程序时,它会知道要查找的位置。当您运行Java程序时,Java本身就是可执行文件(您的操作系统需要知道在哪里找到它)。操作系统不需要找到您真正的Java类文件, Java 需要找到它们,为此它使用完全不同的环境设置(类路径)。因此,如果您将Java类文件放在bin目录中,那么您可能做错了。
其次,您的包结构(_Mathematics.Problems.bin
)应该与目录结构完全匹配,但它应该反映类的用途,因此_Mathematics
和Problems
是包的合理部分结构,但是,bin
或src
不是。通常,我会创建classes
和src
目录,然后我的包结构从那里开始
因此,如上所述,要解决问题: