Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:Huffman(错误名称:p3/Huffman)_Java_Eclipse_Package_Classpath - Fatal编程技术网

“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:Huffman(错误名称:p3/Huffman)

“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:Huffman(错误名称:p3/Huffman),java,eclipse,package,classpath,Java,Eclipse,Package,Classpath,我不知道如何修复这个问题,但我认为这是一个类路径错误。如果这是我的文件结构,我需要知道在哪里运行以下命令: monas-mbp:p3 mona$ java Huffman c p3code.txt p3input.txt p3output.tx Exception in thread "main" java.lang.NoClassDefFoundError: Huffman (wrong name: p3/Huffman) at java.lang.ClassLoader.define

我不知道如何修复这个问题,但我认为这是一个类路径错误。如果这是我的文件结构,我需要知道在哪里运行以下命令:

monas-mbp:p3 mona$ java Huffman c p3code.txt p3input.txt p3output.tx
Exception in thread "main" java.lang.NoClassDefFoundError: Huffman (wrong name: p3/Huffman)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    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:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
好的,我已经将Huffman.class从下面的路径复制到了当前目录,即
/Users/mona/java/p3/src/p3

cp /Users/mona/java/p3/bin/p3/Huffman.class Huffman.class
这是我在Eclipse中看到的。我创建了项目p3,然后它自动创建了包p3,而以前它用于创建
默认包

知道怎么解决吗?还有为什么它没有像往常一样自动创建
默认包

[更新]我没想到会收到如此令人困惑的答案,特别是因为项目名称和自动包名称都是p3。你能更详细地解释一下你的答案吗?以下是Eclipse在我的计算机中创建的结构:

另外,当我在bin/p3中运行命令时,我会得到以下结果:

monas-mbp:p3 mona$ pwd
/Users/mona/java/p3/bin/p3
monas-mbp:p3 mona$ java Huffman c p3code.txt p3input.txt p3output.tx
Exception in thread "main" java.lang.NoClassDefFoundError: Huffman (wrong name: p3/Huffman)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    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:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
我已经将Huffman.class从下面的路径复制到了当前目录,即/Users/mona/java/p3/src/p3

cp/Users/mona/java/p3/bin/p3/Huffman.class-Huffman.class

现在从
p3
的父目录执行java,而不是从
p3
执行java,如果您已将其复制到当前目录,则执行以下一组命令

 mkdir p3
 mv Huffman.class p3/
 java p3.Huffman c p3code.txt p3input.txt p3output.tx
所以结构应该是相对于当前目录的

p3
\
 |
 |
 ------Huffman.class
注意:您正在使用eclipse编写代码,为什么不从eclipse启动呢

它自动创建包p3,而以前它用于 创建默认包

Huffman类必须有一个包声明作为p3。因此,当您在eclipse项目中复制了该文件时,eclipse要么要求您将该文件移动到p3包中,要么从文件中删除包声明

根据项目中的其他文件(堆、HeapSandBox等)是否需要为p3项目,您可能需要移动这些文件

要运行Huffman类,需要使用
package.classname

java p3.Huffman -cp p3code.txt p3input.txt p3output.tx

这对我来说是一个模糊的答案,因为我有两个p3。你能用真实的命令和路径来显示它吗?我应该在哪个路径上写这个命令?java p3.Huffman c p3code.txt p3input.txt p3output.tx你能告诉我绝对路径吗?你能看到我问题中的更新吗?你的更新让我很困惑!转到
cdp3/bin
然后
javap3.Huffman和其他参数
p3项目中的所有文件都自动具有
package p3
我应该在哪个路径中写入此命令
java p3.Huffman c p3code.txt p3input.txt p3output.tx
您能给我绝对路径吗?转到包含c3的目录并从那里运行java命令。不要进去。