“奇怪”;java.lang.NoClassDefFoundError“;日蚀
直到今天下午,我更新了一些文件(包括一个ant build.xml文件),我在Eclipse中有一个Java项目一直在顺利运行。生成项目时,出现以下错误:“奇怪”;java.lang.NoClassDefFoundError“;日蚀,java,eclipse,Java,Eclipse,直到今天下午,我更新了一些文件(包括一个ant build.xml文件),我在Eclipse中有一个Java项目一直在顺利运行。生成项目时,出现以下错误: java.lang.NoClassDefFoundError: proj/absa/FrontEnd/ApplicationStarter Caused by: java.lang.ClassNotFoundException: proj.absa.FrontEnd.ApplicationStarter at java.net.URL
java.lang.NoClassDefFoundError: proj/absa/FrontEnd/ApplicationStarter
Caused by: java.lang.ClassNotFoundException: proj.absa.FrontEnd.ApplicationStarter
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Exception in thread "main"
有人知道问题在哪里吗?java.lang.ClassNotFoundException表示类路径问题。没有线索意味着您假设类路径设置正确,但事实并非如此 如果使用Eclipse进行构建,请确保编译的.class文件所在的目录位于类路径中,并且包含必要的.class文件 如果使用Ant构建,请确保在build.xml中看到类似的内容:
<path id="production.class.path">
<pathelement location="${production.classes}"/>
<pathelement location="${production.resources}"/>
<fileset dir="${production.lib}">
<include name="**/*.jar"/>
<exclude name="**/junit*.jar"/>
<exclude name="**/*test*.jar"/>
</fileset>
</path>
更新:要么你的路径中没有JAVA_HOME/bin,要么你下载了JRE而不是JDK。检查安装Java的目录,看看/bin目录中是否有javac.exe。如果您没有/bin,请下载JDK并安装它
如果您确实有一个包含javac.exe的/bin,请检查您的路径以查看Java/bin目录是否在该路径中。设置好后,打开命令shell并键入“javac-version”以确保一切正常
您告诉Eclipse使用什么JDK 这两个问题都是因为classpathref=“master classpath”,请检查值是否正确我最近经常看到这种情况。就在今天,我遇到了与受影响(红色标记)类位于同一包中的类的问题 退出eclipse并重新启动通常可以解决受影响类上的红旗,但有时项目上会留下红旗,然后我还需要关闭项目并重新打开它,以消除独立的红旗。在一个项目上看到一个红旗,而它的任何子目录中都没有红旗,这看起来很奇怪
对于maven项目集群,我在重新启动eclipse后关闭并打开集群中的所有项目。这似乎是一个常见错误。解决办法是:
- 右键单击项目
- 选择属性
- 选择“Java编译器”
- 松开第一个显示“启用项目特定设置”的框
- 申请
- 拯救
- 跑
希望这能在某些情况下有所帮助。虽然这只是一个猜测,可能不适用于您的具体情况,但这本可以为我节省一个小时左右的时间 如果您已经将一个普通项目“转换”为Java项目(通过编辑.project文件并添加适当的标记),请确保您也有一个适当的指定标记-我的项目没有生成,即使Eclipse尝试并且没有运行构建器(成功!):
org.eclipse.jdt.core.javabuilder
我也面临同样的问题。然后发现类路径中lib文件夹的路径设置不正确 暗箭伤人,但我也遇到了同样的问题。我通过从我的工作区中删除项目(注意不要从磁盘中删除)解决了这个问题,然后重新导入了该项目,效果很好。我认为我的问题是由坏的windows关闭引起的(正确重新启动windows并不能解决问题)。HTH.在Eclipse中执行Project->Clean…为我解决了这个问题。当您启动程序时,它存储了您以后可能修改的启动配置。如果生成/运行过程中发生更改,则可能是设置错误。例如,我曾经使用maven,一些启动配置引用了maven2_classpath_容器。
删除启动配置并再次运行程序时,它可以再次工作 如上所述,“java.lang.ClassNotFoundException意味着类路径问题。”
在我的设置中,我运行Maven来构建(而不是Ant)并使用Eclipse(而不是Netbeans)
通常,为了构建和设置项目,我会在Windows命令提示符下运行“mvn clean”、“mvn compile”、“mvn eclipse:eclipse”。最后一个命令“mvn eclipse:eclipse”更新项目配置,创建.classpath和.project文件
为了解决这个问题,我删除了两个文件(.classpath和.project),然后重新运行了这三个命令
因此,根据您的配置,尝试查找类路径/项目文件(进行备份)并删除它们。您还可以尝试删除目标/release/build文件夹(从build命令创建的任何文件夹)。然后再次尝试构建/打包/配置您的项目。我认为我的问题及其解决方案会有所帮助。因此,我在eclipse项目中遇到了同样的错误。在我的项目中,我有两个jar文件,并且为jar文件中的一个文件抛出了NOCLASSDEFERROR 我的库文件是我的项目继承人中文件夹名“lib”的一部分。我把文件夹名改为“libs”,瞧,它成功了
(我查看了.classpath文件,我有键值对,我的jar文件的条目有一个名为“lib”的键值,因此我认为从lib更改可能会有所帮助。)我发现我的类路径中的WEB-INF/lib中有一个jar,但是当我将它升级到最新版本时,文件名就不同了。从类路径中删除旧的jar文件并添加新的jar文件修复了这个问题。奇怪的是,Eclipse似乎没有警告我旧的jar文件丢失了,似乎正在编译,但是没有编译任何东西,因此出现了NoClassDefFoundError。我的线索是,build/classes目录在项目中设置为输出文件夹,但在生成之后没有在那里创建任何类文件。我看到人们已经谈论过类路径。由于没有可接受的答案,我假设它与类路径无关。所以我想补充一点,没有package指令也会导致类未找到错误。转到构建路径并检查jar文件中的错误,它们可能会被移动
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>