Строительная банка от Intelli-J не выполнится - PullRequest
0 голосов
/ 01 апреля 2019

Я копался в постах об этом весь вечер и, похоже, не могу найти решение, которое работает для меня. Я полностью настроил свой артефакт, собрал jar, запустил java -jar myProject.jar и получил:

Error: Could not find or load main class com.myProject.MyProject
Caused by: java.lang.ClassNotFoundException: com.myProject.MyProject

Я извлек файл jar, и файл класса там. Я все еще относительно новичок в Java, поэтому я не уверен, что это уместно, но в файле jar, если я нажму, чтобы отредактировать «MyProject.class», содержимое будет выглядеть так:

Êþº¾

Кроме этого, я не уверен, где еще искать. Мой исходный каталог настроен правильно, пакет "com" находится в первом слое файла jar.

Стоит также отметить, что это приложение Spring-boot, использующее Maven.

EDIT:

Выше я отредактировал пакет до com.myProject.MyProject (для простоты), но там есть еще один слой, который отражен в коде ниже, "com.myProject.myProject.MyProject". Извините, если это сбивает с толку: /

MyProject.java:

package com.myProject.myProject;

// imports excluded for brevity

@SpringBootApplication
public class MyProject {

public static void main(String[] args) {
    SpringApplication.run(MyProject.class, args);
}

// Fix the CORS errors
@Bean
public FilterRegistrationBean simpleCorsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    // *** URL below needs to match the Vue client URL and port ***
    config.setAllowedOrigins(Collections.singletonList("http://localhost:8080"));
    config.setAllowedMethods(Collections.singletonList("*"));
    config.setAllowedHeaders(Collections.singletonList("*"));
    source.registerCorsConfiguration("/**", config);
    FilterRegistrationBean bean = new FilterRegistrationBean<>(new CorsFilter(source));
    bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
    return bean;
}
}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.myProject</groupId>
<artifactId>myProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>myProject</name>
<description>My Project</description>

<properties>
    <start-class>com.myProject.myProject.MyProject</start-class>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-core</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.4</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <version>2.3.4.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-acl</artifactId>
        <version>5.1.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-jwt</artifactId>
        <version>1.0.8.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.2.11</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.2.11</version>
    </dependency>

</dependencies>

</project>

MANIFEST.MF:

Manifest-Version: 1.0
Main-Class: com.myProject.myProject.MyProject
Start-Class: com.myProject.myProject.MyProject

UPDATE: Я также попытался создать jar с помощью mvn install, и полученный файл jar выдает ту же ошибку при попытке его запустить.

1 Ответ

1 голос
/ 01 апреля 2019

Spring Boot требует, чтобы вы указали основной класс в теге <start-class> свойств вашего pom.xml

<properties>
<!-- The main class to start by executing "java -jar"-->
<start-class>com.myProject.MyProject</start-class>
</properties>

EDIT

Структура вашего пакета в соответствии с файлом pom.xml должна выглядеть следующим образом enter image description here

Если вы уверены, что в вашем приложении есть только одна главная точка входа. Затем попробуйте обновить ваш стартовый файл pom.xml до приведенных ниже базовых зависимостей и выполните mvn clean install перед выполнением сгенерированного файла jar.

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.myProject</groupId>
    <artifactId>myProject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>myproject</name>
    <description>My Project</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

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