在我的pom.xml中使用以下内容:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
然而,我感兴趣的json类在我的代码中无法识别(例如,JSONArray。)然后我尝试导入:
import org.json.*;
在这种情况下,所有内容都会编译,但是当我运行代码时,我会得到以下内容:
org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/json/JSONArray
我似乎找到了一些引用,表明我需要在我的类路径中使用json.jar,但是对于已建立的maven依赖项(我的首选解决方案)或导入调用是否真的有必要?
提前致谢
答案 0 :(得分:1)
你的类路径中需要json.jar。它通常从maven存储库下载到您的m2文件夹中。 m2文件夹应该在您的类路径中。
如何构建你的maven项目,mvn clean install?
答案 1 :(得分:1)
这完全取决于您的项目包装类型。
(注意:如果你像Eclipse一样使用IDE - 当你在其中运行代码时它会为你做。它包含所有Maven依赖项到运行类路径。但不适用于IDE之外的真实运行时。)< / em>的
compile
或runtime
的所有依赖项都将包含在WAR / EAR文件中,并且可用于您的代码。但是如果范围是provided
- 它会回到与JAR相同的范围。当需要的依赖项位于将运行WAR / EAR的Application Server类路径中时,provided
作用域非常有用。它可以防止在每个WAR / EAR和可能的版本冲突中打包公共依赖项。答案 2 :(得分:0)
对我有用的是转到IntelliJ Maven侧面菜单,右键单击该项目,然后选择选项重新导入