我有一个问题。
我在intelliJ中编写了一个Java控制台应用程序。我添加了maven包org.json.json
,如果我在IntelliJ中运行项目,一切正常。
如果我在控制台中启动课程
java Main
我收到此错误:
线程中的异常" main" java.lang.NoClassDefFoundError: 组织/ JSON / JSONObject的
我已经尝试搜索了很多但没有任何作用
答案 0 :(得分:1)
maven-shade-plugin是一个花哨的插件,有很多选项。为了创建包含jar的简单jar,我使用 maven-assembly-plugin 。还要验证org.json.json依赖项中的范围是否设置为compile。
详细信息记录在:https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies
例如:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.main.class.package.your_main_class</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:0)
仅从控制台运行类是不够的。您还需要将classpath设置为指向其所有依赖项,包括json jar。
由于您使用的是Maven,我的建议是使用它的&#34; maven-shade-plugin&#34;为了创建一个包含你的类和所有json jar类的大jar,并使用&#34; -jar&#34;运行你的类。选项。