maven提供的依赖将导致intellij中的NoClassDefFoundError?
IntelliJ在运行类路径时,似乎没有将提供的依赖项放在类路径上,但是我可以在Eclipse中成功地做到这一点maven提供的依赖将导致intellij中的NoClassDefFoundError?,maven,intellij-idea,Maven,Intellij Idea,IntelliJ在运行类路径时,似乎没有将提供的依赖项放在类路径上,但是我可以在Eclipse中成功地做到这一点 因为这对我来说要方便得多,我如何在IntelliJ中做到这一点?它通过命令行在Maven中工作吗?这种行为似乎是正确的。Eclipse过去处理类路径很糟糕,所以我想它现在仍然如此 如果在中运行某些内容,则会有差异,因为提供的作用域仅在编译和测试类路径上可用 如果您在testsourceroot中运行测试或main方法,那么它可以使用提供的依赖项,但是如果您尝试在sourceroot中
因为这对我来说要方便得多,我如何在IntelliJ中做到这一点?它通过命令行在Maven中工作吗?这种行为似乎是正确的。Eclipse过去处理类路径很糟糕,所以我想它现在仍然如此 如果在中运行某些内容,则会有差异,因为提供的作用域仅在编译和测试类路径上可用
如果您在
testsourceroot
中运行测试或main方法,那么它可以使用提供的依赖项,但是如果您尝试在sourceroot
中执行某些东西(通过IntelliJ或exec maven plugin
),那么它将在ClassNotFoundException上失败 我也有同样的问题。Intellij在类路径中不包含提供的依赖项。看见我找到的最佳解决方案是使用exec:java
目标将其作为maven应用程序运行。例如:
exec:java -Dexec.classpathScope=compile -Dexec.mainClass=com.splout.db.integration.NShardEnsemble -Dexec.args=4
我们欢迎更好的解决方案 此答案基于@Meo的答案
ALT+Enter
创建单元测试:
然后运行它:
IntelliJ现在有一个选项,可以在运行配置中
包含具有提供范围的依赖项
:
任何标记为scope-
provided
的库都意味着该库(顾名思义)应该在运行时由JDK或容器(例如tomcat)提供。向我们展示您的pom.xml和“mvn compile”的一些输出,请您可以在测试源中执行任何您想要的操作,它将正常工作。