【发布时间】:2013-09-19 23:43:22
【问题描述】:
我有一个类,它位于一个名为 com.toptur.sysTray 的包中,它所做的只是加载系统托盘,它不使用任何外部包。我创建一个 SysTray 对象来安装系统托盘。一切都很好。我可以从命令行运行应用程序并安装系统托盘。但是当我尝试从类文件创建一个 jar 并运行它时,我得到 NoClassDefFoundError。
包及其类文件在我的应用程序不使用 ant 外部 jar 的 jar 中。只是 java 提供的类。
如果从 jar 中构建一个 .exe 文件,它会再次开始工作而不会出现任何错误。
我怎样才能找到这个?
<target name="jar" depends="">
<jar destfile="build/toptur.jar" >
<manifest>
<attribute name="Built-By" value="Toptur"/>
<attribute name="Main-Class" value="gotacan"/>
</manifest>
<fileset dir="build">
<include name="**/*.class"/>
<include name="**/*.png"/>
<exclude name="**/*.jar"/>
</fileset>
</jar>
我使用上述代码从 ant 目标创建 jar 文件。驱动程序不在包中。它位于 gotacan.java
我使用 java -jar toptur.jar 运行它
程序的其余部分正常工作,它仅在我尝试使用该程序包时引发异常。
【问题讨论】:
-
如何创建 jar 文件以及如何运行它?
-
你能显示整个 NoClassDefFound 堆栈跟踪吗?
-
你的班级真的用小写首字母命名为“gotacan”吗?
-
删除我的答案,以便显示在未回答的问题列表中。
-
嗯,这也可能是由于路径名的拼写。您可能在路径中有大写字母,但在包名称中只有小写字母。在 Windows 上,这可能仍然有效,但是当这些东西被打包到 jar 中时它可能会失败
标签: java jar noclassdeffounderror