Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么jar不';不能使用命令行吗?_Java_Linux_Eclipse - Fatal编程技术网

Java 为什么jar不';不能使用命令行吗?

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

我正在做一个项目,将.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.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
    参数,列出所有依赖项jar

  • 如果从
    java-jar
    开始,那么确保jar的清单(manifest.MF)包括
    类路径
    条目,该条目列出了它所依赖的其他jar

  • 创建一个包含所有必要类的“uberjar”。Maven的shade插件可以为您做到这一点


  • 您可能应该添加一个类路径条目,让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