我为Spring Boot创建了一个Maven项目。我有很多Spring依赖项和一个主类:
// Custom class - 3 integers and a Compare function
class Sums
{
public:
Sums(int v1, int v2, int v3) : val1(v1), val2(v2), val3(v3) {};
bool operator<(const Sums &v) const { return val3 < v.val3; }
int val1;
int val2;
int val3;
};
// Multiset using the above class, sorted using val3
multiset<Sums> b;
b.insert(Sums(1, 2, 11));
b.insert(Sums(0, 1, 20));
// This works.
auto i = b.find(Sums(1,2,11));
cout << i->val1 << ' ' << i->val2 << ' ' << i->val3 << endl;
/* But, suppose I only know that the element of the multiset which I have to find has val1=1 and val2=2, and I don't know the corresponding value of val3.
Is it possible to somehow overload the [] operator, so that the following works? Because, I can't use find() without knowing the values of all three data members of the class.*/
cout << b[1].val3 << endl; // I want this to print 11.
cout << b[1][2].val3 << endl; // Is this also possible?
package com.vastserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyArtifactApplication {
public static void main(String[] args) {
// SpringApplication.run(MyArtifactApplication.class, args);
System.out.println("hello!");
}
}
目录的文件夹结构为:
src
在pom.xml中,我使用.
└── main
├── java
│ └── com
│ └── vastserver
│ └── MyArtifactApplication.java
└── resources
└── application.properties
来在独立的.jar文件中构建项目。即使我三重检查了目录结构和主类文件在pom.xml中是否正确显示,我仍然收到以下错误:maven-assembly-plugin
,当我先运行Error: Could not find or load main class com.vastserver.MyArtifactApplication
然后运行mvn package
或{{1 }}。如果从Intellij运行它,主类就可以工作,因此我知道代码不是问题,而是Maven构建设置。我迷失了我的问题所在。
我的pom.xml如下所示:
java -cp target/vast-ad-server-artifactId-1.0-SNAPSHOT-jar-with-dependencies.jar com.vastserver.MyArtifactApplication
答案 0 :(得分:4)
对我来说:Maven-更新项目有效。
答案 1 :(得分:1)
我认为您应该检查由maven构建的工件的目录结构。 通常,Spring Boot工件是由特殊的Spring Boot插件而非Maven组件插件准备的。
尽管它共享“ jar”后缀,但实际上不是jar,它具有特殊的类加载器,可以从BOOT-INF/lib
文件夹中加载类。
我已经提供了有关Spring Boot应用程序启动here时到底发生了什么的详细解答,但是最重要的是,如果您使用程序集插件,则必须准备清单文件和相当复杂的文件夹结构。坦白地说,我认为您应该将Spring Boot插件用作构建Spring Boot应用程序的首选方法。
答案 2 :(得分:1)
maven->更新项目 对我有用
答案 3 :(得分:0)
我意识到spring-boot-maven-plugin
实际上是在建造建筑物,因此不需要其他插件。如果将maven中的“插件”部分编辑为:
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
然后运行mvn package
和java -jar target/vast-ad-server-artifactId-1.0-SNAPSHOT.jar
即可。
答案 4 :(得分:0)
添加到以上所有答案
右键点击project-> Maven ->update project-> force update
这将下载所有缺少的依赖项。
如果还是不行,还是要走吗?右键单击pom.xml
并按配置运行。检查您使用的是正确的JRE。然后将目标设置为安装并运行它。
重要,如果pom.xml中的Java版本与您安装的JRE版本不匹配,则可能会出现此错误。因此,请确保其相同。 还是不行?? 从工作区中删除项目,然后将其重新导入。
答案 5 :(得分:0)
右键单击项目-> Maven-> UpdateProject->选中“强制更新快照/发布-确定”复选框
花些时间来更新项目。然后只需运行应用程序Rightclickonproject-> Runas-> Spring Boot App
答案 6 :(得分:0)
尝试在 Maven 中更新项目。有时,在添加新依赖项时,它希望更新 Maven,那里开发工具将不起作用
---右键项目 ---去maven ---更新项目