Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
maven提供的依赖将导致intellij中的NoClassDefFoundError?_Maven_Intellij Idea - Fatal编程技术网

maven提供的依赖将导致intellij中的NoClassDefFoundError?

maven提供的依赖将导致intellij中的NoClassDefFoundError?,maven,intellij-idea,Maven,Intellij Idea,IntelliJ在运行类路径时,似乎没有将提供的依赖项放在类路径上,但是我可以在Eclipse中成功地做到这一点 因为这对我来说要方便得多,我如何在IntelliJ中做到这一点?它通过命令行在Maven中工作吗?这种行为似乎是正确的。Eclipse过去处理类路径很糟糕,所以我想它现在仍然如此 如果在中运行某些内容,则会有差异,因为提供的作用域仅在编译和测试类路径上可用 如果您在testsourceroot中运行测试或main方法,那么它可以使用提供的依赖项,但是如果您尝试在sourceroot中

IntelliJ在运行类路径时,似乎没有将提供的依赖项放在类路径上,但是我可以在Eclipse中成功地做到这一点

因为这对我来说要方便得多,我如何在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”的一些输出,请您可以在
测试源中执行任何您想要的操作,它将正常工作。