Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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程序:NoClassDefFound_Java_Jar_Terminal_Classpath_Command Line Interface - Fatal编程技术网

具有引用库的Java程序:NoClassDefFound

具有引用库的Java程序:NoClassDefFound,java,jar,terminal,classpath,command-line-interface,Java,Jar,Terminal,Classpath,Command Line Interface,如何从命令行运行一个Java程序,其中包含多个引用库、.jar文件? 我已将所有.jar放在/lib文件夹中,该文件夹位于项目的根文件夹中,并将这些.jar添加到构建路径中。 所以我的项目现在看起来像这样: 项目: -->/src/Entry.java, ... (all them .java files) -->/bin/Entry.class, ... (all them other .class files) -->/lib/commons-codec-1.10./(

如何从命令行运行一个Java程序,其中包含多个引用库、.jar文件? 我已将所有.jar放在/lib文件夹中,该文件夹位于项目的根文件夹中,并将这些.jar添加到构建路径中。 所以我的项目现在看起来像这样:

项目:

-->/src/Entry.java, ... (all them .java files)

-->/bin/Entry.class, ... (all them other .class files)

-->/lib/commons-codec-1.10./(all them .jars)*
现在,当我尝试从cmd运行程序时: 我将自己定位在/bin文件夹中并执行java条目,但我得到了NoClassDefFound异常


我应该如何运行它?

在运行程序时,您需要告诉JVM在哪里查找类。 我们用来告诉jvm的参数称为classpath

实现这一点有不同的方法

  • 推荐将classpath位置添加到run命令中,或者传递jar位置,假设lib文件夹下有两个jar文件a.jar和b.jar,那么命令应该是
    java-cp“;lib/a.jar;lib/b.jar”条目
  • 或者将jar文件放在已经在类路径下的位置(因为当前文件夹总是在类路径下,最简单的选择是将jar放在当前文件夹下,但这不是一种推荐的实现方法)
  • 在environment properties下修改classpath变量以列出包含jar的文件夹,这是实现此目的的一种简单方法
  • 创建一个批处理文件(.bat),并将jar保存在其中。只要您想运行,就直接运行该批处理文件。我想这是非常简单和有效的

    例如: @回音

    设置路径=%PATH%;E:\Java\jdk1.6.0\u 45\bin//JDK路径

    设置库=%cd%\LIB

    设置CP=“” 设置CP=%CP%;%LIB%\antlr-2.7.6

    设置CP=%CP%;%LIB%\commons-codec-1.8.jar

    设置CP=%CP%;%LIB%\opencsv-2.3.jar

    javac-类路径%cp%*.java

    java-类路径%CP%-Xms256m-Xmx1024m-Xss2m T2D预处理

    停顿


    我希望它能帮助你。谢谢。

    1)哇,
    -cp
    能用逗号吗?我想它应该是*nix上的冒号,Windows上的分号?2) 另一种方法是添加带有
    类路径
    主类
    属性的清单,然后
    java-jar
    就可以了;引用可执行JAR,并引用使用通配符的可能性。如果我键入如下内容:java-cp“lib/a.jar;lib/b.jar”条目,那么它找不到条目类!尝试在类路径中的java-cp.lib/a.jar;lib/b.jar“Entry-a.”来包含当前文件夹