【发布时间】:2019-04-01 01:32:49
【问题描述】:
我整个晚上都在挖掘有关此问题的帖子,但似乎找不到适合我的解决方案。我得到了所有的工件,构建了我的 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还是比较陌生,所以我不确定这是否相关,但是如果我点击编辑“MyProject.class”,在jar文件中,内容如下所示:
Êþº¾
除此之外,我不知道还能去哪里看。我的源码目录设置正确,“com”包在jar文件的第一层。
同样值得注意的是,这是一个使用 Maven 的 Spring-boot 应用程序。
编辑:
上面我将包编辑为 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>
清单.MF:
Manifest-Version: 1.0
Main-Class: com.myProject.myProject.MyProject
Start-Class: com.myProject.myProject.MyProject
更新: 我也尝试过使用 mvn install 创建 jar,结果 jar 文件在尝试运行时会抛出相同的错误。
【问题讨论】:
-
提取出来的jar是什么结构?
-
jar 的结构是 com.myProject.MyProject,其中 META-INF 在基础级别,com 也是。
-
jar里面
META-INF/MANIFEST.MF文件的内容是什么?参见例如logicbig.com/tutorials/spring-framework/spring-boot/… 以内容为例。你看有例如Main-Class和Start-Class已定义。 -
我更新为包含到 MANIFEST.MF 的内容中 - 以前没有包含 Start-Class,所以我添加了它并再次尝试但没有运气。
标签: java maven spring-boot intellij-idea