Java 为什么jar不';不能使用命令行吗?
我正在做一个项目,将.wav文件修改为.flac文件,我使用这个类。我在IDEEclipse中的项目运行良好。但是当我将它导出到.jar并在linux上用命令行运行它时。有一个错误:Java 为什么jar不';不能使用命令行吗?,java,linux,eclipse,Java,Linux,Eclipse,我正在做一个项目,将.wav文件修改为.flac文件,我使用这个类。我在IDEEclipse中的项目运行良好。但是当我将它导出到.jar并在linux上用命令行运行它时。有一个错误: Exception in thread "main" java.lang.NoClassDefFoundError: javaFlacEncoder/FLAC_FileEncoder at speech.Speech.main(Speech.java:44) Caused by: java.lang.Cl
Exception in thread "main" java.lang.NoClassDefFoundError: javaFlacEncoder/FLAC_FileEncoder
at speech.Speech.main(Speech.java:44)
Caused by: java.lang.ClassNotFoundException: javaFlacEncoder.FLAC_FileEncoder
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 1 more
我不知道为什么。有人会有同样的问题吗?你能告诉我怎么解决吗?谢谢,Eclipse负责为Java程序的执行设置类路径;您可能无法在命令行上复制此内容。有几种选择:
java
开头,则添加-cp
参数,列出所有依赖项jarjava-jar
开始,那么确保jar的清单(manifest.MF)包括类路径
条目,该条目列出了它所依赖的其他jar您可能应该添加一个类路径条目,让Java知道您的库 通常,您必须执行以下操作:
# generate the classpath entry
declare classpath=$(for jar in lib/*.jar; do echo ":$jar"; done)
# remove the first character (':').
classpath="${classpath:1}"
java -cp "${classpath}" -jar yourjar.jar
或:
另外,在jar的清单中,.您在终端上键入的命令是什么?您的项目是否引用了任何外部LIB?尝试添加libs的-cp路径。构建jar时是否导出了外部lib?是否为执行jar提供了正确的类路径?请查看FAQ@AndreDuarte:非常感谢,它现在可以工作了。
# the same code that generate classpath
export CLASSPATH="${classpath}"
java -jar yourjar.jar