我如何使用Maven(Intellij)的包启动java类

时间:2017-05-25 20:27:09

标签: java maven intellij-idea

我有一个问题。

我在intelliJ中编写了一个Java控制台应用程序。我添加了maven包org.json.json,如果我在IntelliJ中运行项目,一切正常。

如果我在控制台中启动课程 java Main我收到此错误:

  

线程中的异常" main" java.lang.NoClassDefFoundError:       组织/ JSON / JSONObject的

我已经尝试搜索了很多但没有任何作用

2 个答案:

答案 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;运行你的类。选项。