Java 初学者套餐

Java 初学者套餐,java,packages,Java,Packages,当类文件属于包时, 然后 包含在该文件的源代码中。 因此,当jvm通过编写 java PackageName.classfilename 它被执行 是“PackageName”向jvm保证这个类文件属于这个包吗? 因为如果省略“PackageName”语句,jvm仍然会找到类文件,但会给出 Exception in thread "main" java.lang.NoClassDefFoundError: Classfilename wrongname PackageName/Classfi

当类文件属于包时, 然后

包含在该文件的源代码中。 因此,当jvm通过编写

java PackageName.classfilename
它被执行

是“PackageName”向jvm保证这个类文件属于这个包吗? 因为如果省略“PackageName”语句,jvm仍然会找到类文件,但会给出

Exception in thread "main" java.lang.NoClassDefFoundError: Classfilename 
wrongname PackageName/ClassfileName

这意味着jvm发现了该文件,但出于某种原因,它认为该类文件的名称错误。

该类文件需要存在于文件系统上,与包名称中定义的层次结构相同。如果删除包名,我相信您必须将该文件保存在jar的根文件夹中,才能在“未命名”包中工作。很可能您从源文件中删除了包行,但仍将类定义保留在
PackageName
文件夹中。

类文件需要存在于文件系统中,与包名称中定义的层次结构相同。如果删除包名,我相信您必须将该文件保存在jar的根文件夹中,才能在“未命名”包中工作。很可能您从源文件中删除了包行,但仍然将类定义保留在
PackageName
文件夹中。

类上的包声明必须与代码的文件夹结构相匹配。 JVM将包用于几个“任务”,从方法的可见性到解决两个类可能具有相同名称的情况。 NoClassDefFoundError实际上意味着JVM无法找到包含您提供的包的类。如果在类上ommit包定义,并按如下方式运行程序: java类文件名 只要您在类所在的文件夹中运行java命令,JVM就会找到该类

还有。。。包名称应全部为小写,类名应以大写开头。:)当其他人阅读您的代码时,约定非常有用


希望评论能有所帮助

类上的包声明必须与代码的文件夹结构相匹配。 JVM将包用于几个“任务”,从方法的可见性到解决两个类可能具有相同名称的情况。 NoClassDefFoundError实际上意味着JVM无法找到包含您提供的包的类。如果在类上ommit包定义,并按如下方式运行程序: java类文件名 只要您在类所在的文件夹中运行java命令,JVM就会找到该类

还有。。。包名称应全部为小写,类名应以大写开头。:)当其他人阅读您的代码时,约定非常有用


希望评论能有所帮助

先生,我包括了正确的包名并编译创建了类文件,把它放在包文件夹中。在那里它被正确地执行了。然后我删除了类文件,jvm找不到它,因此出现了“线程中的异常”main“java.lang.NoClassDefFoundError:Classfilename”。然后,我编译了没有“package语句”的源代码,并将其放入package文件夹。这次jvm出现了“线程中的异常”main“错误名称PackageName/ClassfileName”。因此,我认为jvm发现了该文件,但认为它是一个错误的文件。谢谢你,先生!这是javac和java可执行文件的要求,而不是java语言或虚拟机。从技术上讲,Java规范(JLS第7.2节和VM规范第2.7节)不要求源代码树与包结构匹配——这是一个实现决策。另一种存储机制的例子是oracle db—它将源代码和字节码直接存储在数据库中。先生,我包括了正确的包名,并编译创建了类文件,将其放在包文件夹中。在那里它被正确地执行了。然后我删除了类文件,jvm找不到它,因此出现了“线程中的异常”main“java.lang.NoClassDefFoundError:Classfilename”。然后,我编译了没有“package语句”的源代码,并将其放入package文件夹。这次jvm出现了“线程中的异常”main“错误名称PackageName/ClassfileName”。因此,我认为jvm发现了该文件,但认为它是一个错误的文件。谢谢你,先生!这是javac和java可执行文件的要求,而不是java语言或虚拟机。从技术上讲,Java规范(JLS第7.2节和VM规范第2.7节)不要求源代码树与包结构匹配——这是一个实现决策。另一种存储机制的例子是oracle db,它将您的源代码和字节码直接存储在数据库中。谢谢您,先生。非常非常感谢,先生。多谢各位
Exception in thread "main" java.lang.NoClassDefFoundError: Classfilename 
wrongname PackageName/ClassfileName