Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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:名称错误(类似帖子没有帮助)_Java_Exception_Path_Package - Fatal编程技术网

“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:名称错误(类似帖子没有帮助)

“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:名称错误(类似帖子没有帮助),java,exception,path,package,Java,Exception,Path,Package,我有一个名为MemoryComparison.java的java文件,保存在文件夹D:\Documents\CodeAnalysis\project\u analysis\u RG\CodeAnalysis\input\master\Kajari\u G 我正在从文件夹编译和执行这个Java程序 D:\Documents\code分析 在Java程序MemoryComparison.Java中,我没有给出任何包名 现在,当我进行java input\master\Kajari\u G\Memor

我有一个名为
MemoryComparison.java的java文件,保存在文件夹
D:\Documents\CodeAnalysis\project\u analysis\u RG\CodeAnalysis\input\master\Kajari\u G

我正在从文件夹编译和执行这个Java程序
D:\Documents\code分析

在Java程序
MemoryComparison.Java中,我没有给出任何包名

现在,当我进行
java input\master\Kajari\u G\MemoryComparison
时,我得到以下错误:

线程“main”java.lang.NoClassDefFoundError中的异常:input\master\Kajari\u G\MemoryComparison(错误名称:MemoryComparison)

我尝试了各种提供文件夹路径的包名,但都不起作用。我查看了一些类似的帖子,但仍然无法确定何时会找到正确的包名


请帮忙

您应该在java类中使用包名
input.master.Kajari_G
进行这样的编译,或者转到
Kajari_G目录
进行简单的编译,就像
javac MemoryComparison.java

假设您已经编译了类,那么类文件所在的路径应该出现在类路径中

未提供套餐:
这里,如果您当前的目录是
D:\Documents\code分析\project\u analysis\u RG\code分析\
,并且类文件位于
D:\Documents\code分析\project\u analysis\u RG\code分析\input\master\Kajari\u G
,这应该可以工作-
java-cp input\master\Kajari\u G memorycomparision

提供的包(比如input.master.Kajari_G):
这里,如果您当前的目录是
D:\Documents\code分析\project\u analysis\u RG\code分析\
,并且类文件位于
D:\Documents\code分析\project\u analysis\u RG\code分析\input\master\Kajari\u G
,这应该可以工作-
java input.master.Kajari\u G.MemoryComparison
  • 编译不需要类似包的文件夹结构
  • 声明包的类需要位于相应的文件夹结构中,以便类加载器在运行时发现并加载它
  • 比如说
  • 假设您有一个名为
    Test
    的类,它带有包
    com.Test
    。现在您可以从任何地方完成这个类,但要运行这个类,它必须位于
    com/test
    文件夹中,并且应该从文件夹结构外部运行


    java com.test.test

    请问您是否已经用
    javac MemoryComparison.java
    编译过它?我的编译方式是:D:\Documents\codesanalysis\project\u analysis\u RG\codesanalysis>javac input\master\Ka jari\u G\MemoryComparison.java您能帮我做另一件事吗?当我以以下方式运行它时:Runtime.getRuntime().exec(“javac input\\master\\”+entity.getName().toString()+“\\”+fileName+”.java”);Runtime.getRuntime().exec(“java input.master.+entity.getName().toString()+”“+fileName+”>output\\output1.txt”);第一个exec在创建.class文件时运行良好,但下一个exec似乎无法工作,因为没有创建output1.txt。