我已经查看了许多现有线程中有关此错误的内容,但仍然没有找到任何结果。我甚至没有试图包装一个罐子或使用任何第三方包装工具。我只是在Eclipse内部运行(非常好),然后尝试从命令行运行完全相同的应用程序,并将其建在相同的位置(获取此错误)。我的目标是能够压缩bin文件夹并将其发送出去,由其他人通过命令行脚本运行。一些细节:
<classpathentry kind="lib" path="lib/commons-lang-2.4.jar"/>)<classpathentry kind="lib" path="lib/commons-lang-2.4.jar"/>)如果有更多的信息可以帮上忙就告诉我。当然,这是很简单的事情,但我在这一点上浪费了太多时间。这提醒了我为什么我在05年左右离开了Java .
发布于 2009-11-09 18:37:21
NoClassDefFoundError基本上意味着类在编译时存在于类路径中,但在运行时类路径中缺少类路径。
在您的示例中,当从命令行使用java.exe执行时,需要在-cp或-classpath参数中指定类路径。如果是JAR文件,则需要在其class-path文件的MANIFEST.MF条目中指定它。
参数/条目的值可以是指向包含所有.class文件的文件夹或单个.jar文件的绝对或相对文件系统路径。您可以使用分号;分隔路径。当路径包含空格时,需要用双引号"包装特定的路径。示例:
java -cp .;c:/path/to/file.jar;"c:/spacy path/to/classes" mypackage.MyClass为了节省每次在命令行中键入和编辑参数的工作量,请使用.bat文件。
编辑:我应该意识到您使用的是基于Unix的操作系统。上面的例子是针对Windows的.对于类似Unix的平台,您可以遵循相同的规则,但是您需要使用冒号:分隔路径,而不是使用.sh文件来代替最终的批处理文件。
java -cp .:/path/to/file.jar:"/spacy path/to/classes" mypackage.MyClass发布于 2009-11-09 18:34:50
您是否在命令行中将类路径指定为java?
$ java -cp lib/commons-lang-2.4.jar your.main.Class发布于 2009-11-09 18:46:22
在Eclispe中设置的类路径设置仅适用于IDE,不影响应用程序在IDE之外运行的方式。即使您使用Eclipse功能将应用程序导出为可执行的jar文件,也没有现成的方式来打包应用程序所依赖的所有jar。
如果您已经将应用程序打包到一个名为myapp.jar的jar文件中,那么运行下面这样的命令将使用您所依赖的jar运行应用程序,如果您有多个jar文件,那么只需在;或Unix上的:上添加它们:
java -jar myapp.jar -cp .;c:/pathtolibs/commons-lang-2.4.jar如果您只是直接运行这些类,那么要么运行包含您的.class文件的文件夹也需要在路径上(尽管我假设它已经运行了,因为您能够运行程序并获得错误)。
https://stackoverflow.com/questions/1702852
复制相似问题