编译并运行java程序 - NoClassDefFoundError:

时间:2014-11-23 21:36:11

标签: java compilation command-line-interface

大家好,我有一个非常令人沮丧的问题:

我有以下的行为结构:

.
└── Java Project
    ├── bin
    │   └── edu
    │       └── agh
    │           └── cs
    │               └── jtplab (HelloWorld.class)
    ├── lib
    └── src
        ├── edu
        │   └── agh
        │       └── cs
        │           └── jtplab (HelloWorld.java)
        └── resources

在lib目录中,我有log4j2外部jar。在helloworld.java中只有一些简单的system.out.println和log4j2 import语句。该程序正确编译并在Eclipse中运行但是当我使用命令编译我的程序在“Java Project”目录中时:

javac  -cp `find . -name "*.jar" | tr "\n" ":"`:. -d bin src/edu/agh/cs/jtplab/HelloWorld.java

然后它正确编译(它不会因为无法找到log4j2而大喊大叫)

为了运行程序,我输入“bin”目录

cd bin/   
java edu/agh/cs/jtplab/HelloWorld

不幸的是我收到了错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
....

我认为这个错误是因为JVM在运行时执行期间找不到合适的.jars,但是为什么javac在正确编译程序时无法找到它?

当我删除log4j2 import语句时,程序运行没有问题。

如何正确编译/运行此程序以使用log4j2 jar。

由于

0 个答案:

没有答案