Запуск проекта Maven в CMD - PullRequest
3 голосов
/ 25 июня 2019

Мне нужно запустить проект Maven в CMD.Это мой файл pom.xml:

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>

<name>my-app</name>
<!-- FIXME change it to the project's website -->

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <maven.compiler.release>11</maven.compiler.release>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.2.Final</version>
    </dependency>
</dependencies>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

Проект отлично работает в IDE (Eclipse), но когда япопробуйте запустить его запустить из командной строки я получаю следующую ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
        at com.mycompany.app.App.main(App.java:15)
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 1 more

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Это действительно зависит от того, как вы настроили свой проект, но от того, что в трассировке стека говорится буквально, что JVM не может найти упомянутый класс. Теперь вы можете себе представить (это только одна из многих возможных проблем) - ваш код ссылается на класс «Конфигурация» где-то, но когда проект запускается из командной строки - JVM не может его найти.

Я бы рекомендовал взглянуть на эту тему, чтобы понять полученную ошибку. Много мыслей было дано, и это было хорошо объяснено.

По сути, как только вы получите все свои зависимости, эта ошибка исчезнет, ​​и если вы используете TestNG или JUnit, вам не понадобится основной класс. Вы будете запускать свои тесты с mvn clean test или даже более коротким mvn, если добавите <defaultGoal>clean test</defaultGoal> к POM.

1 голос
/ 25 июня 2019

Проблема в вашем случае в том, что у вас нет зависимостей в пути к классам. Вы можете использовать Maven, чтобы получить такое.

 <build>
      <plugins>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <mainClass>fully.qualified.MainClass</mainClass>
              </manifest>
            </archive>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
          <executions>
              <execution>
                <id>make-assembly</id> <!-- this is used for inheritance merges -->
                <phase>package</phase> <!-- bind to the packaging phase -->
                <goals>
                   <goal>single</goal>
                </goals>
              </execution>
            </executions>
        </plugin>
      </plugins>
    </build>

Источник Как я могу создать исполняемый JAR с зависимостями, используя Maven?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...