我的maven pom定义了对foo.jar的依赖,其范围为:provided。
Demo.java位于src / main / java下。它导入foo提供的类。如果我为这个类创建一个运行配置,运行该类会抛出java.lang.NoClassDefFoundError
TestDemo.java位于src / main / test下。它只不过是Demo的一个包装器。如果我为这个类创建一个运行配置,那么一切正常。
如果我更新该工作配置,将主类更改为Demo,我再次看到java.lang.NoClassDefFoundError。
有没有更好的方法在IDE中运行我的主类而不是将包装器放入src / main / test?
答案 0 :(得分:0)
provided
范围依赖项必须在运行时在类路径上,但编译时不需要。如果您需要编译的依赖项(听起来像这样),那么您必须没有provided
范围。
通常,provided
的库具有compile
范围的用于编译的接口库,并且只在运行时提供实现。