大家好,我有一个非常令人沮丧的问题:
我有以下的行为结构:
.
└── 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。
由于